哪个更好?
1
= link_to "Page", "/page", :class => "button", :data => {:theme => "green", :icon => "small-arrow"}
2
= link_to "Page", "/page", class: "button", data: {theme: "green", icon: "small-arrow"}
3
= link_to "Page", "/page", class: :button, data: {theme: :green, icon: "small-arrow"}
我发现符号是最好的使用方法,因为符号和字符串之间的内存分配差异。
我发现版本2.更具可读性(对我来说)并且我认为也更易于维护,因为在字符串中查看/编辑/添加单独的单词(通过空格或破折号)更容易/更快,而不是编辑符号和将其转换为字符串(如果需要,例如添加第二个类“按钮登录”或其他主题“深红色”)。
是否有任何严重的原因(例如表演)使用1.或3.而不是2的符号。?
答案 0 :(得分:3)
请注意,它不仅仅是关于符号,而是关于旧的和新的哈希语法。
我不喜欢将新的哈希语法与符号混合使用。在大多数情况下,新语法看起来很好,例如:
{ width: 42, height: 24 }
但用符号看起来很可怕:
... class: :button ...
在我看来,它很奇怪而且不是人类可读的。我不喜欢第三种选择。所以,我更喜欢这个选项(你没有提到它):
= link_to "Page", "/page", :class => :button,
:data => { :theme => :green, :icon => "small-arrow" }
这样做比较好,因为:class
符号与:button
符号类似。符号应该在一行中以相同的语法编写。
答案 1 :(得分:2)
适用于Ruby 1.8和1.9。
仅适用于1.9。 "button"
和"green"
不存储在堆上,并且是可变的,但是,它们准确地表明它们的价值是重要的。
仅适用于1.9。 :button
和:green
更快(略有),代价是更难描述其意图的代码。
换句话说,就哈希语法而言,2和3是相同的。对于字符串与符号的正确使用,1和2是相同的。