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中的多线程和函数的关键字传参的更多相关文章

  1. python中函数的参数:必传参数(位置参数)、默认值参数、参数组传参、关键字传参

    1.必传参数也叫做位置参数,因为必填,也必须对应位置 2.默认值参数如上图的word 3.参数组参数:传进去的是0个.或多个value的形式,,,和位置参数有点像,只传value值,但是没有限制个数 ...

  2. php匿名函数和闭包函数及use关键字传参及Closure匿名函数类

    php闭包函数用use传参有什么意义?答:use引用外层变量,比如全局变量 Closure,匿名函数,是php5.3的时候引入的,又称为Anonymous functions.字面意思也就是没有定义名 ...

  3. python函数的动态传参.作用域与命名空间

    一.动态传参1.*表示动态传参. 可以接受所有的位置参数传参的时候自动的把实参打包成元组 交给形参 def chi(*food): print(food) chi() # 动态传参可以不传参数 chi ...

  4. python定义函数时的参数&调用函数时的传参

    一.定义函数: 1.位置参数:直接定义参数 2.默认参数(或者关键字参数):参数名 = "默认值" 3.位置参数必须在默认参数之前 二.调用函数: 1.按位置传,直接写参数的值 2 ...

  5. Python函数定义及传参方式

    主要内容:     1.函数初识     2.函数传参方式        (1)位置参数        (2)默认参数        (3)关键参数        (4)非固定传参 一.函数初识 1. ...

  6. 二十一、springboot之定制URL匹配规则(项目中遇到的问题:get方式传参,带有小数点,被忽略)

    一.问题描述: get方式传参,在传送价格,积分时(带有小数点),debug后台微服务接受到的参数,却不带小数点,如:price是0.55,后台接受后却是0 二.解决 在WebConfiguratio ...

  7. Ruby中Time的常用函数

      Time的常用函数 时间对象. Time.now返回当前时间. 1.Time.at Time.at(time[, usec]) 返回time所指时间的Time对象. time可以是Time对象,也 ...

  8. ruby中数组的常用函数

    在程序中定义一个数组 在程序中定义一个数组,因为我们在下面说明. fruits = ["apple", "orange", "lemon"] ...

  9. bash函数定义/使用/传参…

    函数:function, 功能     过程式编程,代码重用         模块化编程         简洁             语法:         function f_name {    ...

随机推荐

  1. appium环境的搭建

    appium环境的搭建,之前看过很多关于appium环境搭建的文章,一个感觉就是“乱”. 所以才想自己来写一篇appium环境的搭建,算是总结和备忘吧. 如下图,其实appium的搭建分三部分完成,各 ...

  2. 第四章 开始Unity Shader学习之旅(1)

    1. 一个最简单的顶点/片元着色器 现在,我们正式开始学习如何编写Unity Shader,更准确的说是,学习如何编写顶点/片元着色器 2.顶点/片元着色器的基本结构 我们在以前已经讲过了Unity ...

  3. css5-盒子模型

    HTML<!DOCTYPE html><html lang="en"><head> <link rel="stylesheet& ...

  4. 第九次作业——DFA最小化,语法分析初步

    老师:MissDu 提交作业 1.将DFA最小化:教材P65 第9题 答: 2.构造以下文法相应的最小的DFA S→ 0A|1B A→ 1S|1 B→0S|0 3.自上而下语法分析,回溯产生的原因是 ...

  5. Python字符串学习

    Python字符串(不可变的): 一.相关的运算: 1.字符串的拼接: str = str1 + str2 2.字符串的重复: print(str * 3) 3.下标访问字符串某个字符: str[1] ...

  6. 最小生成树唯一性判断-UESTC1959天才钱vs学霸周

    天才钱vs学霸周 Time Limit: 1000 MS     Memory Limit: 256 MB Submit Status 有一天,天才钱和学霸周闲的无聊玩起了游戏,游戏内容是这样的,现在 ...

  7. .NET Core的响应式框架,基于Ace Admin框架菜单导航,Bootstrap布局,fontAwesome图标,内嵌Iframe用EasyUI做数据绑定,动态配置列表,动态配置表单

    netnrf 响应式框架 用于快速开发的响应式框架 演示:https://rf2.netnr.com v3.x 前端采用 jQuery + Bootstrap + EasyUI + AceAdmin ...

  8. vue 页面间使用路由传参数,刷新页面后获取不到参数的问题

    情况 情况再简单说明一下: 有三个页面(a-列表页面,b-内页1,c-内页2),页面a->页面b->页面c有参数传递.从a进入b后,刷新b页面拿不到a页面传进来的参数.或者b页面再进入c页 ...

  9. eclipse Outline里图标的含义

    source: http://www.cnblogs.com/qdwyg2013/p/6489019.html 先说颜色: 绿色:public 黄色:protected 蓝色:no modifier ...

  10. 根据WSGI协议自己实现mini-web框架(1)

    1. 为什么要研究WSGI 我之前在学习web开发时,往往都是根据MVT等架构直接写所谓的“视图”,使用其本身自带的http服务器,当时就一直很好奇,为什么有了HTTP协议之后,还要研究WSGI协议, ...