查看: 2754|回复: 6

[已经解决] 请教!self.state?(1)&&!self.state?(2)&&!self.state?(3)数组的写法

[复制链接]
梦石
0
星屑
9160
在线时间
466 小时
注册时间
2015-5-8
回帖
704
发表于 2020-1-10 00:17:27 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 taeckle 于 2020-1-10 00:21 编辑

"if user.state?(1) or user.state?(2) or user.state?(3) or user.state?(4)"    还可以这么写:      "if [1,2,3,4].any?{|i| user.state?(i)}"


那要是"if !self.state?(1) && !self.state?(2) && !self.state?(3)" 用个数组[1,2,3]该怎么写呢?

梦石
0
星屑
13562
在线时间
2753 小时
注册时间
2014-10-4
回帖
705

R考场第七期纪念奖

发表于 2020-1-10 01:19:19 | 显示全部楼层
本帖最后由 SixRC 于 2020-1-10 16:18 编辑

1.可以用 all? 这个方法啊 和 any? 相通
2.这两个语义相反 所以 not any = all not
   然后 你把上面的结果取反也可以吧


1. all not
[pre lang="ruby"][1,2,3].all? {|i| !self.state(i) }[/pre]
2. not any
[pre lang="ruby"]! [1,2,3].any? {|i| self.state(i) }[/pre]

评分

参与人数 2星屑 +50 赞 +2 收起 理由
RyanBern + 50 + 1 认可答案
taeckle + 1 多谢指点!

查看全部评分

回复

使用道具 举报

梦石
0
星屑
9160
在线时间
466 小时
注册时间
2015-5-8
回帖
704
 楼主| 发表于 2020-1-10 09:20:26 | 显示全部楼层
SixRC 发表于 2020-1-10 01:19
1.可以用 all? 这个方法啊 和 any? 相通
2.这两个语义相反 所以 not any = all not
   然后 你把上面的结果 ...

那要怎么写呢。。有点晕啊。。

点评

已更新  发表于 2020-1-10 16:18
回复

使用道具 举报

梦石
10
星屑
39550
在线时间
1919 小时
注册时间
2010-11-14
回帖
3214

R考场第七期纪念奖

发表于 2020-1-10 10:06:59 | 显示全部楼层
本帖最后由 KB.Driver 于 2020-1-10 10:08 编辑

[pre lang="ruby"]if !self.state?(1) && !self.state?(2) && !self.state?(3)[/pre]
等价于
[pre lang="ruby"]if [1, 2, 3].all?{|i| !self.state?(i) }[/pre]



或者这样写
[pre lang="ruby"]if !self.states.any?{|s| [1, 2, 3].inlcude?(s) }[/pre]

评分

参与人数 2星屑 +50 赞 +2 收起 理由
RyanBern + 50 + 1 认可答案
taeckle + 1 大神威武,浪荡乾坤!

查看全部评分

用头画头像,用脚写脚本
回复

使用道具 举报

梦石
0
星屑
14720
在线时间
2175 小时
注册时间
2016-9-20
回帖
777
发表于 2020-1-11 15:28:07 | 显示全部楼层
本帖最后由 ppspssss 于 2020-1-11 15:31 编辑

如果使用for循環, 用邏輯來造的雖然比較長,但應該可以詳細一点,方便修改及日后維護(对于我來說), 如果上方的方法雖然速度快 , 但还是不建議新手用

  1. a = [1,2,3]
  2. 包含 = 0 #建一个局部變量,用于計數
  3. for i in 0..a.size
  4. n = a[i] #建个局部變量等于a數組中第i个的變量
  5. if self.state?(n) #如果包含这个變量(狀態值)
  6. 包含+=1 #如果包含了的話,計數加一個
  7. end #if結束
  8. end #for結束
  9. if 包含 >0
  10. #其中一种的情況
  11. end
  12. if 包含 == a.size
  13. #其中全部种的情況
  14. end
复制代码
贴子只供参考我贴子内容有很多只是我自己标识的内容代指不是原来意思,偏向发贴当时的想法(后来回看贴发现有很多错误,会造成误导 ),如果想靠谱点应 找相关正确的文章   -- 2025/4/19
回复

使用道具 举报

梦石
0
星屑
42235
在线时间
6017 小时
注册时间
2006-11-10
回帖
6966
发表于 2020-1-11 16:24:53 | 显示全部楼层
本帖最后由 灯笼菜刀王 于 2020-1-11 16:34 编辑

if (self.states & [1,2,3,4]).size == 3

F1搜索关键词: 交集

评分

参与人数 1赞 +1 收起 理由
taeckle + 1 多谢大神!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部