1、在RUBY里面,哈希与矩阵是指针传递的,而整形是值传递
2、send函数
if respond_to?("a_func") #用这个方法就可以send函数了
puts "FIND!!!"
send("a_func",入参1,入参2)
else
puts "NO FIND"
end
3、 puts “A”.ord #输出ASCII码
4、Ruby类,一旦出现如: a = Class.new, 那么a就不是指向原来的指针了。编程时尽量规避这些意义含糊的情况
# Definition for a binary tree node.
# class TreeNode
# attr_accessor :val, :left, :right
# def initialize(val = 0, left = nil, right = nil)
# @val = val
# @left = left
# @right = right
# end
# end
# @param {TreeNode} root
# @param {Integer} val
# @return {TreeNode}
# Leetcode 701
def insert_into_bst(root, val)
b = TreeNode.new(1919)
b.left = TreeNode.new(810) # 可以
c = b.left
#c = TreeNode.new(99999) # 不能
c.val = 99999 # 可以
return b
end
5、Ruby中,哈希的key可以是哈希,由哈希的内容所决定而不是地址。因此同一个内容的哈希作为key的映射是唯一的。
6、想要传入一个方法(函数指针):
method(:a_func)
调用时xxx.call(入参1,入参2…),但这种方法貌似只能调本作用域内(模块)的方法
若想跨作用域调用,另一种方法是:
lambda{|x1,x2| return ::MyModule::a_func(x1,x2)}
lambda表达式
7、Ruby的三目运算符 ? :
案例:
puts 1 < 2 ? "One is less than two!" : "One is not less than two."
# 而非 1 < 2 ? puts "One is less than two!" : puts "One is not less than two."
另一案例:
(x = a.pop) ? quick_sort(a.select{|i| i <=x }) + [x] + quick_sort(a.select{|i| i > x}) : []
这里需要注意 [ ].pop.class = NilClass, 以后可以利用这个特性
10、puts ‘-’ * 30
x = [1, 2, 3]
a, b = x #默认会把数组中的值依次赋值给 a ,b
puts a
puts b
#output
1
2
11、puts ‘-’ * 30
x = [1, 2, 3]
a, b = x #这里a会接受第一个元素 b用了号 表示接受剩下所有的元素
puts a
p b
#output------------------------------
1
[2, 3]