The special methods for Ruby -> &(:) and &.

&:

&: 將一組陣列中的元素轉換成字串

1
cats = [1, 2, 3, 4]

當使用:

1
2
cats.map do |x| x.to_s end
cats.map {|x| x.to_s }

會得到:

1
2
3
["1", "2", "3", "4"]
其中的block以及block變數可以用&:代替,然後:後面接續方法:
cats.map(&:to_s)

&.

1
a &. b

如果 a 是 nil,就不會再繼續執行 b,以防造成 nil.b,undefined method b for nil class

1
2
3
4
5
6
a = []
x = a.nil?
puts x => true
a = []
x = a&.nil?
puts x => 不會執行puts

加入&.會判斷receiver如果是nil,就不會執行puts。

1
@candidate&.create

如果 @candidate為nil,就不會執行create方法,如此便不會出現undefined method `[]’ for nil:NilClass的錯誤訊息。