我正在阅读宝石“activerecord-postgres-earthdistance”的源代码。
在运行迁移脚本时,它在以下方法上引发了错误
def order_by_distance lat, lng, order: "ASC"
order: "ASC"
syntax error, unexpected tLABEL
这不是有效的Ruby语法吗?
答案 0 :(得分:2)
Ruby 2.0支持关键字参数
[5] pry(main)> def bar(a: "name", b: "fem"); puts a,b end
[6] pry(main)> bar(a: "John", b: "Male")
John
Male
[7] pry(main)> bar("John", "Male")
ArgumentError: wrong number of arguments (2 for 0)
from (pry):5:in `bar'
但是上述内容在1.9中无效,见下文:
ruby 1.9.3p448 (2013-06-27 revision 41675) [x86_64-darwin12.4.0]
[2] pry(main)> def bar(a: "name", b: "fem"); puts a,b end
SyntaxError: unexpected ',', expecting $end
def bar(a: "name", b: "fem"); puts a,b end
^
[2] pry(main)> def bar(a: "name"); puts a end
SyntaxError: unexpected ')', expecting $end
def bar(a: "name"); puts a end
^
答案 1 :(得分:0)
def order_by_distance(lat, lng, hash={})
puts hash[:order]
end
=> order_by_distance(lat, lng, order: "ASC")
=> "ASC"