1、super不带括号表示调用父类的同名函数,并将本函数的所有参数传入父类的同名函数;
2、super()带括号则表示调用父类的同名函数,但是不传入任何参数;
3、:: 是一元运算符,允许在类或模块内定义常量、实例方法和类方法,可以从类或模块外的任何地方进行访问。
请记住:在 Ruby 中,类和方法也可以被当作常量。
只需要在表达式的常量名前加上 :: 前缀,即可返回适当的类或模块对象。
如果 :: 前的表达式为类或模块名称,则返回该类或模块内对应的常量值;如果 :: 前未没有前缀表达式,则返回主Object类中对应的常量值。
MR_COUNT = 0 # 定义在主 Object 类上的常量
module Foo
MR_COUNT = 0
::MR_COUNT = 1 # 设置全局计数为 1
MR_COUNT = 2 # 设置局部计数为 2
end
puts MR_COUNT # 这是全局常量,输出为1
puts Foo::MR_COUNT # 这是 "Foo" 的局部常量,输出为2
4.A.rb文件的class A_A ,B.rb文件中module C下有class << self,其中有方法def self.set_port,若classA_A想要调用set_port方法,则需要先require 'B.rb',在classA_A中include C,调用时用C.set_port
5.输出路径下的文件有哪些(直接输出文件夹和子文件夹下的文件,不输出文件夹)
puts Dir.entries( "C:/Users/dongw-b/Desktop/下载/Linux版本验证及结果" )
6、ruby中to_s和to_str、to_i和to_int、to_a和to_ary、to_h和to_hash的解释说明
只要像鸭子,就能当成鸭子,这就是to_x。只有它真的是鸭子,才能当成鸭子,这就是to_xxx
to_s 转换成字符串,转换成数字to_i,to_a转换成数组
7、定义类方法的七种方式
class SomeClass
#method 1
def SomeClass.ClassMethod1
end
#method 2
def self.ClassMethod2
end
SomeClass.instance_eval do
#method 3
def ClassMethod4
end
#method 4
define_method(:symbol, )
end
#method 5
SomeClass.class_eval do
def self.ClassMethod5
end
#method 6
class << self
def ClassMethod6
end
end
end
#method 7 - dynamically define a class method at run time
def add_class_method(c, m, &b)
eigenclass = class << c; self; end
eigenclass.class_eval {
define_method(m, &b)
}
end
吐槽:我真是服了,像python一样简洁一些不好吗,这么多中方法干一件事有什么意义啊!!
8、%x 使用`方法执行一段shell脚本并返回标准输出内容.
>> %x(echo foo:#{foo})
=> "foo:Foo\n"
9、ruby使用mysql数据库时首先
require mysql2 #导入mysql2包
hash_info = {... } #存放ip,端口号,用户名,密码等信息的哈希表
client = Mysql2::Client.new(hash_info) #连接数据库
results = client.query("SELECT * FROM users WHERE group='githubbers'") #查询
client.query("CREATE DATABASE `testxxx` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci") #创建数据库
client.query("CREATE table testxxx.test (id int(10),name char(20))") #创建表
client.query("insert into test(id,name) values(#{i},'hello#{i}')") #插入数据
r=client.query("update test set name = 'minitest' where id=12") #更新表
10、它是对当前文件名称的引用FILE,(使用gtf_utils.rb中的get_rel_path(FILE)是获得当前脚本的绝对路径)
if FILE == 0代码的程序为主程序时才会执行下方的代码,然后找到脚本所在的目录,并将其放在加载/需要搜索路径的开头。
FILE是魔术变量,代表当前文件的名称。 $0是ruby的关键字,指启动程序的文件名称。 该检查显示“如果这是正在使用的主文件……”,这允许将文件用作库,而不是在那种情况下执行代码,但是如果文件被用作可执行文件,则执行该代码。
11.引用一个文件
例: 引用当前rb同目录下的file_to_require.rb
先介绍3种方法
1、require File.join(_FILE, '../file_to_require')。
2、require File.expand_path('../file_to_require', FILE)
3、require File.dirname(FILE) + '/file_to_require'
其中,File.expand_path是Rails常用的做法。
FILE为常量,表示当前文件的绝对路径,如/home/oldsong/test.rb
12.利用REXML库读取xml,需要
require 'rexml/document'
include REXML
网友评论