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

Ruby:嵌套if语句

发布时间:2020-12-17 03:55:12 所属栏目:百科 来源:网络整理
导读:我正在编写一些代码,结果却让我觉得太难看了.反正我是否可以重构它以便我不使用嵌套的if语句? def hours_occupied(date) #assuming date is a valid date object availability = get_work_hours(date) focus = "work" if availability.nil availability = g
我正在编写一些代码,结果却让我觉得太难看了.反正我是否可以重构它以便我不使用嵌套的if语句?

def hours_occupied(date)
  #assuming date is a valid date object    
  availability = get_work_hours(date)
  focus = "work"

  if availability.nil
    availability = get_family_hours(date)
    focus = "family"

    if availability.nil
      availability = get_friend_hours(date)
      focus = "friends"
    end
  end
end

我知道我可以做这样的事情以获得可用性

availability = get_work_hours(date) || get_family_hours(date) || get_friend_hours(date)

但是如何相应地设置焦点变量?

解决方法

另一种方法是在需要时重新分配值:

def hours_occupied(date)
  availability,focus = get_work_hours(date),"work"
  availability,focus = get_family_hours(date),"family" unless availability
  availability,focus = get_friend_hours(date),"friend" unless availability
end

或使用迭代器:

def hours_occupied(date)
  availability = focus = nil
  %w(work family friend).each {|type| availability,focus = self.send(:"get_#{type}_hours",date),type unless availability}
end

(编辑:李大同)

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

    推荐文章
      热点阅读