设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
楼主: david_ng223
打印 上一主题 下一主题

[結帖]我開始學腳本啦~~求大神們指點~~

[复制链接]

Lv4.逐梦者 (版主)

百合控

梦石
0
星屑
6643
在线时间
1275 小时
注册时间
2013-8-21
帖子
3657

开拓者

41
发表于 2014-2-5 11:37:30 | 只看该作者
david_ng223 发表于 2014-2-4 18:34
a = 0 # 把0 代入变量a
i = 1 # 把1 代入变量i

复杂的形式不建议用后缀表达式
而且一般来说较多的语句最好写成块
但是如果一定要写的话:
RUBY 代码复制
  1. a = 0
  2. i = 1
  3. [a += i, i += 1] while i <= 5
  4. p a

如果想坑爹点
RUBY 代码复制
  1. a = 0
  2. i = 1
  3. a += i += 1 while i <= 4; a + 1
  4. p a

或者换个思路 不用while
RUBY 代码复制
  1. a = 0
  2. 6.times{|i| a+=i}
  3. p a

点评

还不错,顶一个  发表于 2014-2-11 14:14
p (1..5).inject(:+)  发表于 2014-2-5 13:53
萌新瑟瑟发抖
看到我请叫我去干活
回复 支持 反对

使用道具 举报

david_ng223 该用户已被删除
42
 楼主| 发表于 2014-2-5 12:25:04 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

百合控

梦石
0
星屑
6643
在线时间
1275 小时
注册时间
2013-8-21
帖子
3657

开拓者

43
发表于 2014-2-5 12:28:42 | 只看该作者
david_ng223 发表于 2014-2-5 12:25
a = 0
    i = 1
    a += i += 1 while i

我少打了一个等于号
这样
RUBY 代码复制
  1. a += i += 1 while i <= 4 ; a += 1

事实上,用分号隔开的 就是两个语句
等价于
RUBY 代码复制
  1. a += i += 1 while i <= 4
  2. a += 1

输出15
萌新瑟瑟发抖
看到我请叫我去干活
回复 支持 反对

使用道具 举报

david_ng223 该用户已被删除
44
 楼主| 发表于 2014-2-5 12:47:41 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

百合控

梦石
0
星屑
6643
在线时间
1275 小时
注册时间
2013-8-21
帖子
3657

开拓者

45
发表于 2014-2-5 12:51:30 | 只看该作者
david_ng223 发表于 2014-2-5 12:47
41樓的第1,2段代碼都明白了,
仍然不明白第3段的
6.times{|i| a+=i}

times是整数的方法
times {|n| ... }
依次迭代执行 self 次,从 0 至 self-1。若 self 为负数,则什么都不做。
返回 self。

RUBY 代码复制
  1. 7.times{|i| p i}
  2. #=>0 1 2 3 4 5 6

until等价于 while not
RUBY 代码复制
  1. a  = 0
  2. i = 1
  3. [a += i, i += 1] until i > 5
  4. p a

和之前第一段是一样的

评分

参与人数 1星屑 +20 收起 理由
无脑之人 + 20 我去你这个回复速度太可怕了

查看全部评分

萌新瑟瑟发抖
看到我请叫我去干活
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

46
发表于 2014-2-5 13:56:54 | 只看该作者
本帖最后由 taroxd 于 2014-2-5 14:06 编辑
david_ng223 发表于 2014-2-5 12:47
41樓的第1,2段代碼都明白了,
仍然不明白第3段的
6.times{|i| a+=i}


until 的例子
(选自RGSS3) update until scene_changing?
scene_changing? 是一个方法,如果场景变化就返回true
所以直到场景变化前,游戏场景会不断update,不断update

求和的话可以 p (1..5).inject(:+) 省事,省心~ while 神马的都是浮云

另外说一下,我没有被@到……

点评

我也没有被@到 不知道为什么他一直@不到我……  发表于 2014-2-5 16:44
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
117
在线时间
552 小时
注册时间
2012-8-18
帖子
1429
47
发表于 2014-2-5 16:46:19 | 只看该作者
好神奇的版聊帖,过来围观学习等待扣分【大雾

点评

什么心态  发表于 2014-2-5 17:06
这个速度如何 够慢了吧  发表于 2014-2-5 17:05
什么心态  发表于 2014-2-5 16:46

评分

参与人数 2星屑 +67 收起 理由
taroxd + 1 论版聊不被扣分的正确方法
余烬之中 + 66

查看全部评分

我要填坑!我要背单词!我要学日语!我要每天锻炼!
好吧呵呵= =
回复 支持 反对

使用道具 举报

david_ng223 该用户已被删除
48
 楼主| 发表于 2014-2-5 17:42:00 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

百合控

梦石
0
星屑
6643
在线时间
1275 小时
注册时间
2013-8-21
帖子
3657

开拓者

49
发表于 2014-2-5 17:58:28 | 只看该作者
david_ng223 发表于 2014-2-5 17:42
引用12樓第8行
可是我在94頁的教程中找不到一個=~,
表示我只知道=,==,+=,-=,*=,/=,%=,**=,!=,=的用法

恩……
self === other
此方法多是是用于 case 判断句中。预设情况下与 Object#== 相同。在子类中进行归属检查时,可以根据情况重新定义。


RUBY 代码复制
  1. a = 0
  2. puts "Instance variables a is a " +
  3. case a
  4. when :hello
  5.   "symbol hello"
  6. when "hi"
  7.   "string hi"
  8. when 1
  9.   "Integer 1"
  10. when 0
  11.   "Integer 0"
  12. else
  13.   "Something else"
  14. end
  15. #=>Instance variables a is a Integer 0
  16.  
  17. #依次调用===比较a与case后面的元素
  18. #如果true 执行子句



有时候我们的比较更特殊
有一个类
RUBY 代码复制
  1. class I_AM_A_CLASS
  2.   attr_accessor :m, :n
  3. end
如果有下列比较 返回值是false
RUBY 代码复制
  1. a = I_AM_A_CLASS.new
  2.  
  3. puts a == I_AM_A_CLASS.new
  4. #=> false
于是我们这样
RUBY 代码复制
  1. class I_AM_A_CLASS
  2.   def ===(other)
  3.     return false if self.class != other.class
  4.     self.m === other.m && self.n  === other.n
  5.   end
  6. end

有这个比较
RUBY 代码复制
  1. a = I_AM_A_CLASS.new
  2.  
  3. puts a == I_AM_A_CLASS.new
  4. #=> false
  5.  
  6. puts a === I_AM_A_CLASS.new
  7. #=> true
萌新瑟瑟发抖
看到我请叫我去干活
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

50
发表于 2014-2-5 18:14:37 | 只看该作者
本帖最后由 taroxd 于 2014-2-5 18:29 编辑

首先参见34楼,有对case的简单介绍
case中用的是 === 来判定相等

RUBY 代码复制
  1. def balabala(something)
  2.   case something
  3.   when 'string' then puts 'something is "string"'
  4.   when /string/ then puts 'something is a string that includes "string"'
  5.   when String then puts 'something is a string'
  6.   else puts 'something is not a string'
  7.   end
  8. end
  9.  
  10. balabala('string')
  11. balabala('i am a string')
  12. balabala('balabala')
  13. balabala(/string/)
  14. balabala(String)


输出结果:
something is "string"
something is a string that includes "string"
something is a string
something is not a string
something is not a string

这说明,
regexp === string 的结果是匹配是否成功。
class === instance 的结果是 instance 是否是 class 或其子类的实例。
这两者都与原来的 == 意义无关了

当然 === 不一定要用在case语句里,你也可以拿出来单独用,比如17L代码第三行的注释里面

点评

→ → 我木有教程…………  发表于 2014-2-7 09:14
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-16 13:35

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表