我熟悉Java和C,并且对Ruby也有一定的了解,但有时候会被一些Ruby语法搞糊涂。
例如下面这行代码是什么意思?我想我们在调用一个函数protect_from_forgery()
,但是with: :exception
是什么意思呢?我猜:exception
是一个哈希值(例如{ :exception => "NullPtr" }
),但是with:
又是什么呢?
protect_from_forgery with: :exception
我熟悉Java和C,并且对Ruby也有一定的了解,但有时候会被一些Ruby语法搞糊涂。
例如下面这行代码是什么意思?我想我们在调用一个函数protect_from_forgery()
,但是with: :exception
是什么意思呢?我猜:exception
是一个哈希值(例如{ :exception => "NullPtr" }
),但是with:
又是什么呢?
protect_from_forgery with: :exception
这一行代码中有很多语法糖。我认为让你困惑的是哈希和符号的缩写。如果你不熟悉符号,请参考这个好的教程。
去掉所有的语法糖,这行代码可以写成:
protect_from_forgery({:with => :exception})
分解一下,即使没有大括号,最后一个传递给方法的参数也会被视为哈希。因此:
protect_from_forgery({:with => :exception})
等同于:
protect_from_forgery(:with => :exception)
当哈希表的键为符号时,可以通过将冒号放在单词末尾而不是开头来定义哈希表和键。例如:
protect_from_forgery(:with => :exception)
与下面的代码等价:
protect_from_forgery(with: :exception)
protect_from_forgery(with: :exception)
等同于:
protect_from_forgery with: :exception
:$set
、:@var
、:'where is pancakes house?'
这样的符号。 - mu is too short