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

Project1

 找回密码
 注册会员
搜索
查看: 1748|回复: 3
打印 上一主题 下一主题

[已经解决] 问一个白痴问题,Ruby中的可选参数和“*”号的用法

 关闭 [复制链接]

Lv3.寻梦者

梦石
0
星屑
1195
在线时间
1564 小时
注册时间
2008-7-30
帖子
4418

贵宾

跳转到指定楼层
1
发表于 2009-12-2 23:44:01 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 DeathKing 于 2009-12-3 12:54 编辑

对于这个,我受Visual Basic影响很深。这里就引用Visual Basic的一段代码来做说明。
  1. Function RM_66rpg(UseIE As Boolean, Optional DeathKing As String) As String
  2.     If UseIE = True Then
  3.         If DeathKing <> "" Then
  4.             MsgBox DeathKing & " is using IE"
  5.         Else
  6.             MsgBox "Use IE"
  7.         End If
  8.     Else
  9.         MsgBox "IE is BadEgg!", vbOKOnly
  10.     End If
  11. End Function
复制代码
我这里是随便定义了一个函数(RM_66rpg),这里,需要一个布尔型的参数UseIE,这个是必要的,而DeathKing这个String参数是可选的(因为有Optional的缘故)



现在我使用RM_66rpg这个函数的时候,DeathKing这个参数是可选的就体现出来了(那里有个方括弧)。

我想问的是,Ruby里面到底有没有可选参数的说法。看到有文献(http://book.csdn.net/bookfiles/393/10039314540.shtml)说要在变量名前面加一个“*”号,但是我还是没搞明白。

这里用一段RGSS脚本:
  1. def dk_sum(a,b,c=0)
  2.   return a+b if c==0
  3.   return a+b+c if c!=0
  4. end
复制代码
以前为了突出c变量的可选性,就使用了上面的写法,感觉这样存在弊病也没必要,所以求解。

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

Lv1.梦旅人

梦石
0
星屑
50
在线时间
2 小时
注册时间
2009-4-6
帖子
43
2
发表于 2009-12-3 01:00:44 | 只看该作者
*X  的意思是吸收一切!!!原文是这样写的!
*x记法意味着:在调用该方法时,可以提供任意数目的参数(包括不提供任何参数)。在此例中,变量x被赋给一个数组,该数组包含了方法调用时发送给该方法的所有参数值。你可以遍历数组逐个地检查这些值(第11章将更详细地介绍数组)。

晕乎了!  

再看看的说  不好发言什么!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
帖子
1924
3
发表于 2009-12-3 02:40:54 | 只看该作者
你提供的 Ruby 脚本 和 VB 的函数参数机制本质上没什么区别,都是给参数一个默认值,只不过一个是在函数内部判断字符串是否为空,一个是判断变量是否为 0,这个可以称之为“可选参数”

至于 * 的作用,用“可变参数列表”来形容更恰当。printf 就是一个典型的例子,可以接受任意 n 个参数~
实际用法:
在某个形式参数前用 * 来修饰它,这样在实际参数传递到该参数时,会把之后所有的参数都捕获到一个数组中,并传递给这个参数引用。之后你可以通过操作这个数组,来引用不同的参数,比如:
def fn(arg1, arg2, *args) ... end
fn("a", "b", "c", "d", 5, false)
arg1 = "a" = 第一个参数
arg2 = "b" = 第二个参数
args[0] = "c" = 第三个参数
args[1] = "d" = 第四个参数
args[2] = 5 = 第五个参数
args[3] = 6 = 第六个参数
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
2 小时
注册时间
2009-4-6
帖子
43
4
发表于 2009-12-3 12:13:22 | 只看该作者
貌似懂了~~~~~~~    去实验下!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-26 09:41

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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