美文网首页
术:4个ruby小技巧

术:4个ruby小技巧

作者: 稻草人_b788 | 来源:发表于2019-10-26 08:10 被阅读0次

一、4个ruby小技巧

(一)nil转数组

有时候对于nil对象,我们希望转成数组来处理,这样进行each循环时便不会报错。
nil转数组可以用三种方法:
1.使用Array()方法

Array(nil)
=> [nil]

2.使用to_a方法

nil.to_a
=> []

3.使用[*]方式将对象转成数组

[*nil]
=> []

[*1]
=> [1]

[*1..5]
=> [1, 2, 3, 4, 5]

补充说明:
使用[*]和Array都有一个好处,就是可以把单个对象和数组用同样的方式进行操作,此外这两种方式还可以对各种集合类型、hash以及range进行操作:

a = 1 #单对象
b = [1,2,nil] #数组

[*a] #*操作单对象
 => [1]

[*b] #*操作数组
 => [1, 2, nil]

Array(a) #Array操作单对象
=> [1]

Array(b)  #Array操作数组
 => [1, 2, nil]

[*'a'..'e'] #*操作range
=> ["a", "b", "c", "d", "e"]

Array(1..5) #Array操作range
=> [1,2,3,4,5]

Array({k: 1})
 => [[:k, 1]]

[*{k: 1}]
 => [[:k, 1]]

{k: 1}.to_a
=> [[:k, 1]]

(二)使用Hash方法接收参数构建散列

使用Hash方法并传入参数可以构建散列,传入的参数必须是偶数个,如果传入的参数是奇数个则会报错
按照顺序每两个参数将构成一个键值对,第一个参数作为key,第二个参数作为value。
例如:

h = Hash["a","b"]
=> {"a" => "b"}

m = Hash["a","b",:c,"d"]
=> {"a"=>"b", :c=>"d"}

拓展运用
假如这里有一个文件,其中的内容有姓名和国家,但它不是ruby能直接识别的数据结构,我们要把它先转成ruby能识别的数据结构,然后将其中的姓名和国家和相应的人员做成散列形式:

line = "first_name=david;last_name=black;country=usa" #文件的原始内容
record = line.split(/=|;/) #将内容按照=或;进行分割
=> ["first_name", "david","last_name","black","country","usa"]

再将上述的数据进行进一步加工,转成散列形式:

data = []
element = Hash[*record] #使用*将上面获取的数组转成裸列表,作为参数传给Hash方法,从而构建散列
=> {"first_name"=>"david", "last_name"=>"black", "country"=>"usa"}
data.push(element)
=>[{"first_name"=>"david", "last_name"=>"black", "country"=>"usa"}]

(三)使用双星**接收hash格式的参数

在方法的参数列表中,单星*表示将参数作为数组来接收,而双星**则表示将参数作为hash散列来接收
例如:

def hello(a,*b,**c)
    p a,b,c
end
hello(1,2,3,a: 1,b:2)
 #1 参数a的值
 #[2, 3] 参数b的值
 #{:a=>1, :b=>2} 参数c的值
 => [1, [2, 3], {:a=>1, :b=>2}]

(四)数组转参数列表

数组可以通过前面加上星号*转成参数列表
例如:

a = [1,2]
def count_num(x,y)
    return x + y
end

count_num(*a) #将数组a转成了参数列表,分别赋值给了x和y
=> 3

二、其他ruby小技巧

相关资料:10 个 Ruby 技巧提升你的代码–ruby china

相关文章

  • 术:4个ruby小技巧

    一、4个ruby小技巧 (一)nil转数组 有时候对于nil对象,我们希望转成数组来处理,这样进行each循环时便...

  • bundler 管理 Ruby Gem 小技巧

    bundler 管理 Ruby Gem 小技巧 在 Ruby 项目中,特别是 Rails 项目,使用 bundle...

  • 唱歌小贴士

    收听语音部分请转到微信公众号:Ruby夜间模式 欢迎来到Ruby教唱歌小讲堂。 非常开心能够把自己的一些唱歌小技巧...

  • Ruby 处理异常小技巧

    类似用户未读通知的站内消息,每次访问站点时都必须查询的操作,如果出现数据库查询连接异常或网络连接错误,那么程序就会...

  • Ruby小技巧:Each with object

    Ruby Bits: Each with object Enumerable是Ruby世界的核心模块。如果熟悉了它...

  • 蓝小雨销售课堂:给客户打电话,99%的新手会犯的一个错误!

    希望这个小技巧能给我们的销售话术带来收获!!! 想学到更多的销售话术和销售技巧请加:LXYKF888 在社群我们一...

  • 154—清醒-Day4#裂变实验室#<任务宝后台默背功能&

    小裂变,默背记得的功能和设置,技巧点: 一、关键词设置+关注后发送话术 二、用户成功参加活动话术,如何邀约助力话术...

  • 电话销售人员的五大禁忌

    电话销售技巧和话术是死的,但是人是活的,如果你想成功,就要不断学习和总结电话销售技巧和话术,下面学习啦小编整理了电...

  • "谈判话术"小技巧

    谈判是双方进行交易前的准备行为,最后能否达成合作就是通过谈判这一行为所带来的结果。 著名谈判专家盖温.肯尼迪说过:...

  • 精解传统文化的道和术

    道 和 术 道是本质、规律,也是格局、胸怀 术是方法、技巧,也是策略、经验 有道无术,术尚可求;有术无道,止于术 ...

网友评论

      本文标题:术:4个ruby小技巧

      本文链接:https://www.haomeiwen.com/subject/qylyvctx.html