当前位置: 首页 > 文档资料 > Ruby 参考手册 >

Ruby FAQ

优质
小牛编辑
127浏览
2023-12-01


  1. 一般的问题
  2. 变量、常数、参数
  3. 调用带块方法(迭代器)
  4. 句法
  5. 方法
  6. 类、模块
  7. 内部库
  8. 扩展库
  9. 尚未列出的功能
  10. 日语字符的处理
  11. Ruby的处理系统

一般的问题



  • 1.1 Ruby是什么?
  • 1.2 为什么取名叫Ruby呢?
  • 1.3 请介绍一下Ruby的诞生过程
  • 1.4 哪里有Ruby的安装文件?
  • 1.5 请问Ruby的主页在哪里?
  • 1.6 请问有Ruby邮件列表吗?
  • 1.7 怎么才能看到邮件列表中的老邮件?
  • 1.8 rubyist和ruby hacker的区别是什么?
  • 1.9 它的正确写法是"Ruby"还是"ruby"?
  • 1.10 请介绍一些Ruby的参考书
  • 1.11 我看了手册可还是不明白,该怎么办?
  • 1.12 ruby的性格比较像羊?
  • 1.13 遇到bug时怎么上报?

变量、常数、参数



  • 2.1 将对象赋值给变量或常数时,会先拷贝该对象吗?
  • 2.2 局部变量的作用域是如何划定的?
  • 2.3 何时才能使用局部变量?
  • 2.4 常数的作用域是如何划定的?
  • 2.5 实参是怎么传递给形参的呢?
  • 2.6 将实参赋值给形参之后,对实参本身有什么影响吗?
  • 2.7 若向形参所指对象发送消息的话,可能出现什么结果?
  • 2.8 参数前面的*是什么意思?
  • 2.9 参数前面的&代表什么?
  • 2.10 可以给形参指定默认值吗?
  • 2.11 如何向块传递参数呢?
  • 2.12 为什么变量和常数的值会自己发生变化?
  • 2.13 常数不能被修改吗?

调用带块方法



  • 3.1 什么是"带块的方法调用"?
  • 3.2 怎么将块传递给带块方法?
  • 3.3 如何在主调方法中使用块?
  • 3.4 为什么Proc.new没有生成过程对象呢?

句法



  • 4.1 像:exit这种带:的标识符表示什么?
  • 4.2 如何取得与符号同名的变量的值?
  • 4.3loop是控制结构吗?
  • 4.4a +b报错,这是怎么回事儿?
  • 4.5s = "x"; puts s *10 报错,这是怎么回事儿?
  • 4.6 为什么p {}没有任何显示呢?
  • 4.7 明明有pos=()这样的setter方法,可为什么pos=1时却没有任何反应呢?
  • 4.8'\1''\\1'有什么不同?
  • 4.9 在p true or true and false中会显示true,但在a=true if true or true and false中却不会把true赋值给a
  • 4.10 为什么p(nil || "")什么事儿都没有,可p(nil or "")却会报错呢?

方法



  • 5.1 向对象发出消息之后,将按照什么顺序来搜索要执行的方法?
  • 5.2+-是操作符吗?
  • 5.3 Ruby中有函数吗?
  • 5.4可以在外部使用对象的实例变量吗?
  • 5.5privateprotected有什么不同?
  • 5.6 能不能将实例变量变成public类型的变量?
  • 5.7 怎样指定方法的可见性?
  • 5.8 方法名可以用大写字母开头吗?
  • 5.9 为什么使用super时会出现ArgumentError?
  • 5.10 如何调用上2层的同名方法?
  • 5.11 重定义内部函数时,如何调用原来的函数?
  • 5.12 何谓破环性的方法?
  • 5.13 那些情况下会产生副作用?
  • 5.14 能让方法返回多个值吗?

类、模块



  • 6.1 重定义类时,是否会覆盖原来的定义?
  • 6.2 有类变量吗?
  • 6.3 什么是类的实例变量?
  • 6.4 什么是特殊方法?
  • 6.5 什么是类方法?
  • 6.6 什么是特殊类?
  • 6.7 什么是模块函数?
  • 6.8 类和模块有什么区别?
  • 6.9 模块可以生成子类吗?
  • 6.10 在类定义中定义类方法 和 在顶层中定义类方法 之间有什么不同?
  • 6.11loadrequire有什么不同?
  • 6.12includeextend有什么不同?
  • 6.13self是什么?
  • 6.14MatchData中的beginend分别返回什么?
  • 6.15 如何使用类名来获得类?

内部库



  • 7.1instance_methods(true)返回什么?
  • 7.2 为什么rand总是生成相同的随机数?
  • 7.3 怎样从0到51中选出5个不重复的随机数呢?
  • 7.4FixnumSymboltruenilfalse这些立即值与引用有什么不同?
  • 7.5nilfalse有什么不同?
  • 7.6 为什么读入文件并修改之后, 原文件依然没有变化?
  • 7.7 怎样覆盖同名文件?
  • 7.8 写文件后拷贝该文件,但所得副本并不完整,请问原因何在?
  • 7.9 在管道中将字符串传给less后, 为什么看不到结果?
  • 7.10 无法引用的File对象将会何去何从?
  • 7.11 怎样手动关闭文件?
  • 7.12 如何按照更新时间的新旧顺序来排列文件?
  • 7.13 如何获取文件中单词的出现频度?
  • 7.14 为什么条件表达式中的空字符串表示true呢?
  • 7.15 如何按照字典顺序来排列英文字符串数组?
  • 7.16"abcd"[0]会返回什么?
  • 7.17 怎么把tab变成space?
  • 7.18 如何对反斜线进行转义操作?
  • 7.19subsub!的区别在哪里?
  • 7.20 \Z匹配什么?
  • 7.21 范围对象中的.....有什么不同?
  • 7.22 有函数指针吗?
  • 7.23 线程和进程fork有何异同?
  • 7.24 如何使用Marshal?
  • 7.25 Ruby有异常处理语句吗?
  • 7.26 如何使用trap
  • 7.27 如何统计文件的行数?
  • 7.28 怎样把数组转化为哈希表?
  • 7.29 将字符串变为Array时可以使用%w(...),那么将字符串变为Hash时能不能如法炮制呢?
  • 7.30 为何无法捕捉NameError异常呢?
  • 7.31 为什么有succ却没有prev呢

扩展库



  • 8.1 如何使用交互式Ruby?
  • 8.2 有调试器吗?
  • 8.3 怎样在Ruby中使用以C写成的库?
  • 8.4 有Tcl/Tk的接口吗?
  • 8.5 为什么我的Tk不管用?
  • 8.6 有gtk+、xforms的接口吗?
  • 8.7 进行日期计算时需要注意哪些问题?

尚未列出的功能


日语字符的处理



  • 10.1 若包含汉字的脚本输出乱码或无法正常运行时,该如何处理?
  • 10.2 选项-K和$KCODE有什么不同?
  • 10.3 可以使用日语标识符吗?
  • 10.4 如何从包含日语字符的字符串中依次抽出1个字符?
  • 10.5 tr("あ","a")运作不正常,应如何处置?
  • 10.6 如何对平假名进行排序?
  • 10.7 如何用空白来替代SJIS中从84BF到889F之间的系统相关代码?
  • 10.8 如何进行全角-半角字符的变换?
  • 10.9 关于半角假名的问题
  • 10.10 怎样从包含日语字符的字符串中抽出n字节的内容?
  • 10.11 怎么让日语文本在第n个字处换行?

Ruby的处理系统



  • 11.1 能不能编译Ruby脚本呢?
  • 11.2 有没有Java VM版的Ruby?
  • 11.3 除了original Ruby之外,就没有其他版本吗?
  • 11.4 有没有Ruby用的indent?
  • 11.5 有没有使用本地线程的Ruby?
  • 11.6 GC实在是太慢了,怎么办才好?
  • 11.7 有没有Mac版的Ruby?