引用良好的RIP Hash火箭帖似乎暗示Hash Rocket语法(:foo => "bar")已被弃用foo: "bar",而不支持新的Ruby JSON风格的hash(),但我找不到任何明确的引用来说明Hash Rocket表单实际上从Ruby 1.9开始被弃用/未经过修改.
使用Ruby时,我总是和它混在一起:.
当有人在变量名称之前使用它时,有人可以解释一下吗:name,当我想在变量之后使用它时name:?
一个例子是崇高的.
我有一个变量id,我想将它用作散列中的键,以便分配给变量的值用作散列的键.
例如,如果我有变量,id = 1那么所需的结果将是{ 1: 'foo' }.
我试过创建哈希,
{
id: 'foo'
}
Run Code Online (Sandbox Code Playgroud)
但是,这并不工作,而不是导致与符号的哈希:id来'foo'.
我可以发誓我以前做过这件事,但我完全是在画一个空白.
根据The Well Grounded Rubyist:
Ruby允许在哈希键位置使用特殊形式的符号表示,在符号之后使用冒号而不是之前的冒号,并删除哈希分隔符箭头.换句话说,这个:
hash = { :name => "David", :age => 49 }
Run Code Online (Sandbox Code Playgroud)
也可以这样写:
hash = { name: David, age: 49 }
Run Code Online (Sandbox Code Playgroud)
我在ruby 1.8.7和1.9.2中尝试了前面的代码 - 它无法正常工作.我究竟做错了什么?
使用ruby 1.9.3,字符串键似乎不适用于Hash冒号表示法:
1.9.3p194 :005 > {abc: 5}
=> {:abc=>5}
1.9.3p194 :004 > {'abc': 5}
SyntaxError: (irb):4: syntax error, unexpected ':', expecting tASSOC
{'abc': 5}
^
Run Code Online (Sandbox Code Playgroud)
我想我正在运行正确版本的Ruby
1.9.3p194 :006 > RUBY_ENGINE
=> "ruby"
1.9.3p194 :007 > RUBY_VERSION
=> "1.9.3"
Run Code Online (Sandbox Code Playgroud) 我正在努力理解:符号和文本之间的区别:关于结肠放置.我的理解是,当我们使用:symbol时,我们指的是这个对象及其包含的内容,其中text:用于为文本赋值,就像我们将变量一样.这是正确的还是有人可以详细说明用法.谢谢.
我正在为电影名称存储创建一个Ruby哈希.
当哈希的键是包含空格的字符串时,它可以正常工作.
如:
movies = {"Avatar" => 5, "Lord of the rings" => 4, "Godfather" => 4}
现在我试图用符号替换字符串的使用:
movies = {Avatar: 5, Lord of the rings: 4, Godfather: 4}
显然这不起作用.
Ruby如何处理符号命名中的空格?
我一直注意到rails社区已经开始使用":"符号表示更多内容.最近我在代码审查中收到了一条评论:
post 'examples/', to: 'examples#index'
Run Code Online (Sandbox Code Playgroud)
比这更好:
post "examples/" => "examples#index"
Run Code Online (Sandbox Code Playgroud)
我的问题是:
我不太清楚以下两种符号之间的区别是什么:
= render :partial => "order_fields", :locals => { :t => type, :f => c}
= render :partial => "order_fields", :locals => { t: type, f: c}
Run Code Online (Sandbox Code Playgroud)
他们似乎都工作,但我无法理解有什么区别.请你帮助我好吗?