Project1

标题: unless和 if not一样的吧。 [打印本页]

作者: yang1zhi    时间: 2016-2-24 18:34
标题: unless和 if not一样的吧。
既然有 if not为啥还要有unless
作者: zaiy2863    时间: 2016-2-24 18:39
既然有for为什么还要有while?
作者: 迷糊的安安    时间: 2016-2-24 18:45
既然有因为为什么还要有由于?
作者: 余烬之中    时间: 2016-2-24 18:47


既生瑜何生亮

作者: Im剑侠客    时间: 2016-2-24 19:12
鱼我所欲也,熊掌亦我所欲也。
作者: lianran123456    时间: 2016-2-24 19:57
有for为啥还要有while?
作者: 我只能呵呵了    时间: 2016-2-24 21:05
@三途亚梦 @tjjlb @精灵使者
我记得水区版规中禁止队形吧(至于那个违反版规的管理员你们看着办_(:з」∠)_)
作者: Vortur    时间: 2016-2-24 21:58
没有什么原因吧?!大概跟出门左脚右脚的事情一样吧?!
作者: hys111111    时间: 2016-2-24 22:03
因为表达一个意思不一定用一个词啊。

我估计这样是为了习惯问题。一些人习惯用unless,一些人习惯if not,一些人习惯if !。
这样子多种表达方式也不会太僵硬。
作者: 冷峻逸    时间: 2016-2-24 22:08
提示: 作者被禁止或删除 内容自动屏蔽
作者: tjjlb    时间: 2016-2-24 22:14
本帖最后由 tjjlb 于 2016-2-24 22:26 编辑
我只能呵呵了 发表于 2016-2-24 21:05
@三途亚梦 @tjjlb @精灵使者
我记得水区版规中禁止队形吧(至于那个违反版规的管理员你们看着办_(:з」∠) ...

A-18 【队形】关于队形贴的规定:
①直接复制某层楼并且无字面意义上改动的回复,视为纯水回复。扣除10-50经验不等。
②发起队形贴/有意提醒楼下队形的用户。视队形严重性扣除至少50-200经验不等。
③关于一些求祝福、求恭贺的主题贴,可以放宽本条规定,如果是无理取闹的队形,则按常规处理。
④当然,帖子标题的队形也是不允许的,无理取闹的标题队形会受到更重的处罚。


2~3楼、10层均有字面意义上的改动,且1~3楼、10楼并没有有意提醒楼下保持队形,所以1~3楼、10楼不算违规

6楼与2楼重复,涉嫌违规
作者: H·H·Y    时间: 2016-2-24 22:22
既然有?:为什么还要if?
作者: 威风镰鼬    时间: 2016-2-24 22:26
一个字母和一个词组的区别。

(加上个人猜测,unless可能占有字节少点)
作者: 迷糊的安安    时间: 2016-2-24 22:33
既然有欧买歌,为啥还要有我只能呵呵了、RPGMakerMV和SadSlime
作者: 美丽晨露    时间: 2016-2-25 00:03
语文为什么有同义词呢?
那程序为什么就不能有同义代码呢?
作者: myownroc    时间: 2016-2-25 01:07
本帖最后由 myownroc 于 2016-2-25 01:09 编辑

不一样
  1. a = 1
  2. b = 2

  3. if not a > b and false
  4.         p 1
  5. end

  6. unless a > b and false
  7.         p 2
  8. end
复制代码


@taroxd  
作者: taroxd    时间: 2016-2-25 06:33
本帖最后由 taroxd 于 2016-2-25 06:34 编辑

如果你不喜欢这种「一件事情可以有多种方法完成」的 philosophy,建议去学 python。
如果你觉得 if not 和 unless 也是需要“记”的东西,建议去学英语。

下面有四行代码执行的效果是一样的,但阅读代码时语义的重点不一样。
if not/unless, while not/until 这种东西,除了优先级之外,更重要的不同还是在于语义上的微妙差别吧。
RUBY 代码复制
  1. def condition_is_true?
  2.   true
  3. end
  4.  
  5. def condition_is_false?
  6.   false
  7. end
  8.  
  9. def do_something_success?
  10.   true
  11. end
  12.  
  13. def do_something_fail?
  14.   false
  15. end
  16.  
  17. puts 1 if condition_is_true?
  18. puts 2 unless condition_is_false?
  19. do_something_success? && puts(3)
  20. do_something_fail? || puts(4)

作者: oobuluo    时间: 2016-2-25 11:01
同义词得不同人用法
作者: 寒冷魔王    时间: 2016-2-26 00:35
语言是信息的载体,程序设计语言也是如此。
程序设计语言实现了人与机器的交互,即信息通过人传递给机器。这仅仅是一方面而已。
程序语言不仅仅是给机器看的,更是给人看的。
关键词诸如楼主所述的unless, if not等,置于相似的语言环境,实现相似的功能。
这代表其向机器传达的信息的相似的。
通过语言要素的组合,我们向机器传达了我们想要表达的信息。

再联想一下自然语言,有这么一个故事,两位算命师分别对国王说:
(A)“国王的亲戚们比国王活的都短。”
(B)“国王比国王的亲戚们活的都长。”
我们可以看到,这两句话所表达的信息是相同的。
但最后的结果却是:A被恼羞成怒的国王杀掉,B则接受了喜上眉梢的国王的赏赐。
为什么表达的信息相同的,而结果却是不同的呢?
——因为人是有感情的动物,语言至信息的处理受到感情的左右。
我们可以设想,当人工智能发展到相当的高度,机器人实现普遍化时,如果这个国王是机器人,那么这两句话传达给它,它都能理解其本身的涵义,给予A和B相同的惩罚。

机器是准确无误的。程序设计语言面向机器,要求其设计时准确无误,不能产生歧义。
而与此同时,程序设计语言也是面向人的。面向人,要求其“人性化”,为人着想。
诸如早期的机器语言和汇编语言,其实本质上并无不同,但机器语言很快为汇编语言所取代,是因为汇编语言更“人性化”一些。
有些不太成功的语言作者,在设计之初,仅仅将语言要素聚集起来,使得使用者怨声连连。这就是因为其并未考虑到“人”的因素。

语言并非是词汇或语法要素的聚集体。就连汇编这种由助记符构成的语言,也不仅仅是助记符的集合。
语言除了硬性的诸如语言语法、语言关键词(如if case等)等“硬指标”,还包括语言习惯、语言风格等“软指标”。
“硬指标”是程序语言设计时所首要考虑的,其主要面向机器,是衡量语言本质的重要标准;而“软指标”则往往是经过不断的使用渐渐形成的,它受到“硬指标”的直接影响,但同时也经历了与人的磨合。诸如Ruby中缩进通常使用双空格,就是一种软指标。
“软指标”更能体现“人性化”这个特点。软指标是程序设计语言经历了与人的磨合,自然而然形成的,是判断语言成熟与否的标准。

Ruby是“面向程序员的语言”。其设计之初,就是考虑了“人”这一要素。
同一语义的不同表达,正是Ruby的设计哲学“面向人”之所在。
Ruby中String类的两个方法length和size是等价的,但是同一个方法为什么要起两个不同的名称呢?——人的习惯不同。
对“人”的考虑,使得Ruby具有特殊的魅力。
作者: 暗夜荆棘—佩恩    时间: 2016-2-26 21:41
这就是算法的奇妙之处,一种功能实现可能有N多种算法,如何精确使用每个例如unless还是if not,还要看自己的功底,开发脚本还是本身经验之谈,虽然自己还是个不会脚本的老鸟!




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1