ruby中的多线程和函数的关键字传参
1、实现ruby中的多线程
# def test1
# n = 1
# if n > 10
# puts "test1结束"
# else
# while true
# sleep 2
# puts n
# n = n + 1
# end
# end
# end
#
#
# def test2
# n = 100
# if n > 100
# puts "test2结束"
# else
# while true
# sleep 2
# puts n
# n = n + 10
# end
# end
# end
#
# t1 = Thread.new{test1()}
# t2 = Thread.new{test2()}
#
# t1.join
# t2.join
#
ruby的多线程中也是利用queue进行数据的交互和传递,看下下面的例子
$queue = Queue.new def test1
sleep 2
puts "test1"
$queue << "test111"
end def test2 sleep 4
puts "test2"
$queue << "test22222222"
end t1 = Thread.new{test1}
t2 = Thread.new{test2} t1.join
t2.join 2.times do
res = $queue.pop
puts res
end
通过queue对象就可以子线程和主进程之间进行数据交互
定义一个局部变量的queue对象,做数据传递
def test1(queue)
sleep 2
puts "test1"
queue << "test111111111111111111"
end def test2(queue) sleep 4
puts "test2"
queue << "test222222222222222"
end def test
queue = Queue.new
t1 = Thread.new{test1(queue)}
t2 = Thread.new{test2(queue)} t1.join
t2.join
2.times do
res = queue.pop
puts res
end
end test
2、实现ruby中的关键字传参,这里要用冒号,而不是等号
def test(a:"a1",b:"b1",c:"c1")
puts a
puts b
puts c
end test(a:"a2",c:"c2")
3、ruby中普通参数和关键字参数混合使用
def test1(d,a:"a1",b:"b1",c:"c1")
# 这里的普通参数必须要放在前面,放在后面会报错的
puts a
puts b
puts c
puts d
end test1(1) test1(1,c:"c2")
4、ruby函数关键字和普通参数混用,传递一个Hash,函数的参数使用传递的值和hash中的值
args = {"a":"a11","b":"b11","c":"c11"}
def test2(d,a:"a1",b:"b1",c:"c1")
# 这里的普通参数必须要放在前面,放在后面会报错的
puts "test22222222222222"
puts a
puts b
puts c
puts d
end
5、ruby函数关键字参数和普通参数混用,函数使用默认值和hash两种
args = {"a":"a11","c":"c11"}
def test3(d,a:"a1",b:"b1",c:"c1")
# 这里的普通参数必须要放在前面,放在后面会报错的
puts "test333333333333"
puts a
puts b
puts c
puts d
end
test3(2,args)
ruby中的多线程和函数的关键字传参的更多相关文章
- python中函数的参数:必传参数(位置参数)、默认值参数、参数组传参、关键字传参
1.必传参数也叫做位置参数,因为必填,也必须对应位置 2.默认值参数如上图的word 3.参数组参数:传进去的是0个.或多个value的形式,,,和位置参数有点像,只传value值,但是没有限制个数 ...
- php匿名函数和闭包函数及use关键字传参及Closure匿名函数类
php闭包函数用use传参有什么意义?答:use引用外层变量,比如全局变量 Closure,匿名函数,是php5.3的时候引入的,又称为Anonymous functions.字面意思也就是没有定义名 ...
- python函数的动态传参.作用域与命名空间
一.动态传参1.*表示动态传参. 可以接受所有的位置参数传参的时候自动的把实参打包成元组 交给形参 def chi(*food): print(food) chi() # 动态传参可以不传参数 chi ...
- python定义函数时的参数&调用函数时的传参
一.定义函数: 1.位置参数:直接定义参数 2.默认参数(或者关键字参数):参数名 = "默认值" 3.位置参数必须在默认参数之前 二.调用函数: 1.按位置传,直接写参数的值 2 ...
- Python函数定义及传参方式
主要内容: 1.函数初识 2.函数传参方式 (1)位置参数 (2)默认参数 (3)关键参数 (4)非固定传参 一.函数初识 1. ...
- 二十一、springboot之定制URL匹配规则(项目中遇到的问题:get方式传参,带有小数点,被忽略)
一.问题描述: get方式传参,在传送价格,积分时(带有小数点),debug后台微服务接受到的参数,却不带小数点,如:price是0.55,后台接受后却是0 二.解决 在WebConfiguratio ...
- Ruby中Time的常用函数
Time的常用函数 时间对象. Time.now返回当前时间. 1.Time.at Time.at(time[, usec]) 返回time所指时间的Time对象. time可以是Time对象,也 ...
- ruby中数组的常用函数
在程序中定义一个数组 在程序中定义一个数组,因为我们在下面说明. fruits = ["apple", "orange", "lemon"] ...
- bash函数定义/使用/传参…
函数:function, 功能 过程式编程,代码重用 模块化编程 简洁 语法: function f_name { ...
随机推荐
- CSS 导入-选择器-权重
CSS 导入-选择器 Cascading Style Sheets 层叠样式表 它用来控制网页样式,并允许将样式代码与网页内容分离的一种标记性语言 CSS语法结构 选择器 声明{} 属性名:属性值 c ...
- [TimLinux] JavaScript position为fixed时支持水平滚动条
1. 固定定位 position: fixed;设置好之后,元素在浏览器窗口中的位置就固定住了,这个时候,不论是水平移动滚动条,还是垂直移动滚动条,元素是打死都不会动的. 但是当用fixed定位的元素 ...
- ZOJ 2112 Dynamic Rankings(树状数组+主席树)
The Company Dynamic Rankings has developed a new kind of computer that is no longer satisfied with t ...
- Python核心笔记:在python文件中如何调用其它python脚本文件,你肯定不会
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:zhujuyu 笔者在自学python的时候遇到了这样一个练习题:将 ...
- 基于iCamera测试500w摄像头-mt9p001,mt9p031,mt9p001模块小结
基于iCamera测试500w摄像头-mt9p001,mt9p031,mt9p001模块小结 先看实物 M12标准无畸变镜头效果 标准CS镜头效果 iCamera底板+mt9p001安装效果 再看看c ...
- 【面试】386- JavaScript 面试 20 个核心考点
点击上方"前端自习课"关注,学习起来~ 引言 Javascript是前端面试的重点,本文重点梳理下 Javascript 中的常考基础知识点,然后就一些容易出现的题目进行解析.限于 ...
- Websphere 重置admin 控制台密码
By way of wsadmin command: <WAS_INSTALL_DIR>/bin/> wsadmin -conntype NONE wsadmin> secur ...
- pipelinedb学习笔记 - 1. Continuous Views (连续视图)
Continuous Views 一.Continuous Views 英文直译过来叫连续视图, 在pipelindb中是被定义为专门用来展示 Stream中数据用的.例如:Stream中有一些用户信 ...
- ssh jail
useradd -s /sbin/nologin -M updateuserpasswd updateusermkdir /home/updatechown root:root /home/updat ...
- Jenkins + Docker + dockerfile-maven-plugin + Harbor CI/CD spring-boot项目的最轻量级配置
说明 本文只为方便日后查阅,记录一些关键性的步骤和踩坑的情况. dockerfile-maven-plugin构建镜像配置 <plugin> <groupId>com.spot ...