加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

是Ruby的逻辑运算符方法,就像二元运算符一样?

发布时间:2020-12-17 02:38:47 所属栏目:百科 来源:网络整理
导读:我想知道,是,和||,还是基本核心不可更改的功能(如在其他语言中,例如:php),或者它们是对象方法,如 =但定义了一些神奇的方式 关于我的思想特征的更多细节: [] [10]# = [][].([10])# = []"aaa". 10# NoMethodError: undefined method `' for "aaa":String 注
我想知道,是&&,和||,还是基本核心不可更改的功能(如在其他语言中,例如:php),或者它们是对象方法,如& < =>但定义了一些神奇的方式

关于我的思想特征的更多细节:

[] & [10]
# => []

[].&([10])
# => []

"aaa".& 10
# NoMethodError: undefined method `&' for "aaa":String

注意它说未定义的方法

……当然可以.

true.& false
# => false

……但你做不到:

true.&& false
# SyntaxError:

所以,如果有可能的话

class String
  # monkey patch. If you googled this don't use this in real world,use ruby mixins insted
  def &(right_side)
    # do something meaningfull
    right_side
  end
end

"aaa".& 10
# => 10     # ta-da!

有可能做(有一些魔法):

class String
  # monkey patch. If you googled this don't use this in real world,use ruby mixins insted
  def &&(right side)
    # do something meaningfull
    right side
  end
end
# => SyntaxError: (irb):13: syntax error,unexpected keyword_end

谢谢

解决方法

这些是无法(重新)定义的运算符:

>&&,|| (AND,OR)
> ..,…(范围)
>?:(三元)
>救援
> =(和** =,&& =,& =,* =,=. – =,<< =,>> =,|| =,| =,^ =)
>定义?
>不是
>和,或
> if,除非,while,until

其他,如(不完整列表)!,?,–,**,*,/,%,>>,==,!=作为方法实现,可以重新定义.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读