查看: 2292|回复: 8

[有事请教] 为啥许多人都会把一个判断方法搞得这么麻烦

[复制链接]

路人党员

梦石
0
星屑
52
在线时间
2276 小时
注册时间
2010-12-30
回帖
3011
发表于 2011-1-7 16:43:52 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 英顺的马甲 于 2011-1-7 16:49 编辑

为啥许多人在判断一个是否数字在两个数字之间时,
都用了一个很麻烦的算法,就拿鼠标图片响应来做例子:
  if   if mx < lx or mx > rx or my < ty or my > by or
     self.bitmap.get_pixel(mx-lx,my-ty).alpha == 0
     @picture.name = @picture.name.split(/_/)[0]+"_"+@picture.name.split(/_/)[1]
     return
   end
为啥不更直接的用:
   if not mx.between?(lx,rx) or not my.between?(ty,by)  or
     self.bitmap.get_pixel(mx-lx,my-ty).alpha == 0
     @picture.name = @picture.name.split(/_/)[0]+"_"+@picture.name.split(/_/)[1]
     return
   end
难道用个.between?真比用这么长的算法还难?
本人擅长XP,如果有脚本或者Ruby方面的问题欢迎发电邮到engshun@1ppl.me咨询,本人很少检查电邮所以不一定会及时回复,本人不会直接出手解决问题只会提供一个方向,所以谢绝伸手党
梦石
0
星屑
8003
在线时间
1184 小时
注册时间
2007-7-29
回帖
2014
发表于 2011-1-7 16:47:01 | 显示全部楼层
between沒效率……(笑)

点评

我记得between多了一个东西...那个时候研究小湖那个矩形与线触碰发现到的。就好像max和min其实也是沒效率的...(笑)  发表于 2011-1-8 17:54
求解释,为啥没效率  发表于 2011-1-7 20:06
回复

使用道具 举报

梦石
0
星屑
1580
在线时间
1564 小时
注册时间
2008-7-30
回帖
4207

贵宾

发表于 2011-1-7 17:11:51 | 显示全部楼层
底层实现应该一样吧,不过between?和include?比较好理解罢了。
  1. C:\Documents and Settings\DeathKing>ri Integer#between?
  2. ---------------------------------------------------- Comparable#between?
  3.      obj.between?(min, max)    => true or false

  4.      From Ruby 1.9.1
  5. ------------------------------------------------------------------------
  6.      Returns +false+ if _obj_ +<=>+ _min_ is less than zero or if
  7.      _anObject_ +<=>+ _max_ is greater than zero, +true+ otherwise.

  8.         3.between?(1, 5)               #=> true
  9.         6.between?(1, 5)               #=> false
  10.         'cat'.between?('ant', 'dog')   #=> true
  11.         'gnu'.between?('ant', 'dog')   #=> false



  12. C:\Documents and Settings\DeathKing>ri Range#include?
  13. --------------------------------------------------------- Range#include?
  14.      rng.member?(val)  =>  true or false
  15.      rng.include?(val) =>  true or false

  16.      From Ruby 1.9.1
  17. ------------------------------------------------------------------------
  18.      Returns +true+ if _obj_ is an element of _rng_, +false+ otherwise.
  19.      If beg and end are numeric, comparison is done according magnitude
  20.      of values.

  21.         ("a".."z").include?("g")  # => true
  22.         ("a".."z").include?("A")  # => false
复制代码

See FScript Here:https://github.com/DeathKing/fscript
潜心编写URG3中。
所有对URG3的疑问和勘误或者建议,请移步至发布页面。
欢迎萌妹纸催更
回复

使用道具 举报

梦石
0
星屑
1547
在线时间
688 小时
注册时间
2009-11-11
回帖
2692
发表于 2011-1-7 21:17:38 | 显示全部楼层
看来只有提高CPU频率了

嘿。嘿。嘿
回复

使用道具 举报

梦石
0
星屑
1643
在线时间
1612 小时
注册时间
2007-8-28
回帖
3184

第3届短篇游戏大赛主流游戏组冠军第1届Title华丽大赛新人奖

发表于 2011-1-7 21:21:29 | 显示全部楼层
这个和难没有关系吧。
.between的算法估计和第一个差不多

写脚本其实越麻烦越好,到时候就明白了
“我推荐你一个游戏吧,avg的,剧情特感人”
“我擦,都是文字图片的游戏有啥好玩的,连个战斗都没有!”
“我推荐你一个游戏吧,rpg的,战斗也新颖”
“我擦,怎么米有作i弊器?“
”你不是喜欢战斗么?”
“不,我是剧情党!!”

继续阅读请点击
http://rpg.blue/blog-53316-10027.html
回复

使用道具 举报

CHAOS

梦石
0
星屑
92
在线时间
244 小时
注册时间
2005-11-4
回帖
3418

贵宾

发表于 2011-1-8 00:16:29 | 显示全部楼层
为啥你不重载个mx.between?(lx,rx,ty,by)方法?
梦想世界,在你伸手!
回复

使用道具 举报

梦石
0
星屑
310
在线时间
953 小时
注册时间
2007-4-25
回帖
798
发表于 2011-1-8 13:42:21 | 显示全部楼层
可能是:
1、这“许多人”并不知道有这么一个内置的方法;
2、这“许多人”是硬件消耗 minimalist,追求手动优化(实际上 Ruby 1.8 也确实只能手动优化)。
su@rpg.blue:~> repeat 1 fortune
Matz is nice, so we are nice.
回复

使用道具 举报

梦石
0
星屑
60
在线时间
41 小时
注册时间
2008-3-5
回帖
1992
发表于 2011-1-8 13:54:41 | 显示全部楼层
楼主真无聊。不会用的不会知道这个复杂的东西的。会用的也不会去用那个麻烦的东西的。比起翻说明书,自己创造个,岂不快哉。
  1.   #---------------------------------------------------------------------------
  2.   # ● 鼠标在一个区域内
  3.   #---------------------------------------------------------------------------
  4.   def onside(x0,y0,x1,y1)
  5.     if @mouse_x > x0 and @mouse_x < x0+x1 and @mouse_y > y0 and @mouse_y < y0+y1
  6.       return true
  7.     else
  8.       return false
  9.     end
  10.   end
复制代码

点评

潇洒!  发表于 2011-1-8 15:29
你它囧一字母君谁记得……
当时那把剑离我的喉咙只有0.01工分。可是一柱香之后,这个女主人会深深的爱上我,虽然本人平生说了无数的谎话,可是这句最有效:“你应该这么做,我也应该死。
曾经有一取ID的机会放在我面前,我没有珍惜,等我失去的时候我才后悔莫及,人世间最痛苦的事莫过于此。你的剑在我的咽喉上割下去吧!不用再犹豫了!如果上天能够给我一个再来一次的机会,我绝对会取个汉字君。如果非要给这ID加点修饰的话,我希望是……红色加粗……

回复

使用道具 举报

静

梦石
0
星屑
49
在线时间
157 小时
注册时间
2007-12-16
回帖
3031
发表于 2011-1-8 23:09:50 | 显示全部楼层
就像PASCAL INC(i) 与 i:=i+1一样的…… 去看看汇编就知道了 工作原理完全不同

评分

参与人数 1星屑 +2 收起 理由
chaochao + 2 正解。

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部