Today's the day

向软件大牛炫耀我会焊单片机,向硬件大牛炫耀我会写 Rails,向软硬件大牛炫耀我生物,向软硬件生物大牛炫耀我会折腾期货 -_-bbb

带有默认值的 to_i
FCKEditor 2.6 终于发布了~

犯迷糊了: 对 && 的错误理解

galeki posted @ 2008年4月05日 17:32 in RoR , 4388 阅读

&& 符号在 Ruby 中不仅仅是逻辑运算符 and,而且还常常拿来连接语句的执行,比方说:

  1. @user = User.find(params[:id]) && @user.someattr = somevalue

这样只有前面的语句执行成功,找到了 @user,才会执行后面的设置语句,非常实用~

因为 Ruby 中在逻辑判断中等同于假的只有 nil 和 false,大部分语句只要成功执行,都不会返回 nil 或 false,所以一直以来,我就以为 && 之前的语句执行成功了,就会执行后面的语句,直到昨天写出了下面的代码:

  1. @user.show_navbar_admin = false && @user.save

天真的我以为,前面的赋值语句执行成功,就会执行后面的保存,还顺便 One liner 了一把,哪知道,赋值语句的返回值就是被赋予的值, a = false 的返回值就是 false,所以后面的 @user.save 根本就没执行,纳闷了半天才醒过来……

以后再用 && 之前一定想清楚,语句间没有什么逻辑关系的,还是老老实实分成两行写吧,实在想 One liner,用分号分割一行内的语句:

  1. @user.show_navbar_admin = false ; @user.save
  • 无匹配
  • 无匹配
Avatar_small
stainless 说:
2008年4月25日 03:24 (@user.show_navbar_admin = false).class == FalseClass && @user.save
ash 说:
2008年4月25日 23:51 我一直是这么用的:逻辑判断用&&,连续的行为用and(eg, redirect_to root_url and return false)。
Avatar_small
galeki 说:
2008年4月26日 02:54

是啊,本应该如此,却被我滥用了……

anonymous 说:
2023年4月28日 03:22

Initial You got a awesome blog .I determination be involved in plus uniform minutes. i view you got truly very functional matters , i determination be always checking your blog blesss. Orlando Termite Control

anonymous 说:
2023年4月28日 03:29

In this particular article, you will see a summary, satisfy browse this post. Lakeland exterminators

anonymous 说:
2023年6月18日 18:11

These things are very important, good think so - I think so too...  tile murals


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter