Ruby - jwyx/ForFun GitHub Wiki

Credit

caterpillar.onlyfun.net/Gossip/Ruby/index.html

The Philosophy of Ruby, by Yukihiro Matsumoto

Ruby inherited the Perl philosophy of having more than one way to do the same thing. 
I inherited that philosophy from Larry Wall, who is my hero actually. 
I want to make Ruby users free. I want to give them the freedom to choose. 
People are different. People choose different criteria. 
But if there is a better way among many alternatives,
    I want to encourage that way by making it comfortable.
So that's what I've tried to do. 

Sites

http://guides.rubygems.org/
https://rubygems.org/

Basic

_ 表示irb中上一次运算结果
__FILE__ 取得程序所在的文件名
load:每载入一次.rb文件,就会重新执行.rb文件的最新内容;可以使用相对路径或绝对路径
require:载入过的文件,再次require不会重复执行;可以使用相对路径或绝对路径
load要求载入一个文件,而require要求某个功能特性;在相对路径或不指定路径的情况下,load和require从默认路径寻找指定载入的文件和特性
$:变量取得默认搜索路径;必要时,可以启动ruby时加上-I指定路径
RbConfig::CONFIG["bindir"]:取得Ruby安装目录中的bin目录
RbConfig::CONFIG["rubylibdir"]:取得用Ruby编写的标准程序库Library
RbConfig::CONFIG["archdir"]:取得C编写的扩展Extension
RbConfig::CONFIG["sitedir"]:放置可信任第三方程序库的目录
RbConfig::CONFIG["vendordir"]:放置厂商程序库
ARGV 字符串数组收集命令行参数
print "Hello, ", ARGV[0], "\n"
puts "Hello, #{ARGV[0]}"
STDOUT.print // 默认为STDOUT
STDERR.print
gets获得使用者输入,输入文字按下Enter,gets会以字串传回使用者的输入,取得的字串包括换行字符 // 从STDIN输入
print和puts都能使用 逗号分隔 想输出的文字
printf格式化输出
sprintf格式化字串 或 "%d %.2f %s" % [1, 99.3, "Justin"]
字串转化为整形或浮点型to_i, to_f
to_i, to_f比较宽松,如果字串后段混有非数字,只对数字部分进行解析
如果需要严格的检查,可以使用Integer或Float
文件输入可以使用File.read(),一次读取所有内容;
如果想要逐行读取可以使用open方法,使用file.gets读取每行,当遇到文件结尾,会传回nil;file.close
或者直接使用file.each { |line| print line } 或者 open(file, "r") { |file| file.each { |line| print line } }
写入文件,使用open的"w"模式打开,并使用print,puts等方法进行写入
byte操作使用each_byte读入,使用print写出,打开模式包括"b"

数据类型
    Numeric
        Integer
            Fixnum
            Bignum
        Float
    所有数据都是对象,Literal方式书写整数,默认是十进制数,0b二进制,0八进制,0x十六进制
    Fixnum的长度根据机器而有所不同,当超过Fixnum长度,会自动转换为Bignum
    使用字串,浮点数的to_i可以转化为整数,to_i可以指定2-36作为底数;E.g. "10".to_i(2)
    2 ** 100 次方运算
    3.14 或 3.14e-10 都是Float
    字串,整数使用to_f转变为浮点数,需要注意浮点数的精度问题
    如果需要精确的浮点数,可以使用bigdecimal的BigDecimal类

    字串属于String类,可以使用双引号或单引号;使用单引号不对其中的特殊字符进行处理而直接输出;

Method, Class, Module

Advanced