![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ruby
jimcarol
微信号: h7113253
添加请注明来意
展开
-
ruby 语法规则(syntax rules)
命名规范name可以被 字母(letters),数字(digits),下划线(underscores) ps:带有@开头的后面的 第一个字符不能是数字(digits) 局部变量(local variables),方法参数(method parameters),方法名字(method names) 这3个的名字必须是以: 下划线(under_score),小写字母(lowercase lett原创 2016-05-10 20:17:21 · 413 阅读 · 0 评论 -
IO
file.new 和 file.open 的区别 file.open 可以在后面与块关联而 file.new 不可以 a = file.new("aa.rb","w") a.close b = file.open("bb.rb"){|f| f}原创 2016-07-13 12:01:09 · 210 阅读 · 1 评论 -
ruby send 方法
用它可以在类的外面调用私有方法哟 class MyClass private def get_name "i am ruby" end end mine = MyClass.new mine.get_name #NoMethodError: private method `get_name' called for #<MyClass:0x000000原创 2016-07-05 18:13:19 · 1938 阅读 · 0 评论 -
IO读文件 each_line foreach read readlines
each_line each_line调用blcok,并且把file的每一行传入block File.open("testfile") do |file| file.each_line{|line| puts "got #{line}"} end ## "got line 1 \n" "got line 2 \n" 也可以给each_line传入参原创 2016-07-18 17:40:59 · 939 阅读 · 0 评论 -
ruby 中的sort 和 sort_by
在Rails里,我们可以用sort_by方法对一个Ruby对象数组按照某个属性 进行排序 User.all.sort_by{|u| u.created_at} 上面的写法等效于 User.all.sort{|a,b| a.created_at <=> b.created_at}原创 2016-07-21 17:03:39 · 3276 阅读 · 0 评论 -
each_with_object
(1..10).each_with_object([]){|i,a| a.push(i)} => [1,2,3,….,10]原创 2016-08-27 15:05:13 · 590 阅读 · 0 评论 -
ruby 中super和super()的区别
我们经常要在子类的initialize方法中调用super和super()。从语法上说super和super()是有微妙区别的。super不带括号表示调用父类的同名函数,并将本函数的所有参数传入父类的同名函数;super()带括号则表示调用父类的同名函数,但是不传入任何参数;class SParent def initializ转载 2016-08-27 15:51:18 · 1212 阅读 · 0 评论 -
ruby字符串的encoding,force_encoding,encode,encode!转码(编码转换)
ruby1.9开始对字符串编码支持已经比较完善,我们可以直接通过使用String类的实例方法encoding,force_encoding, encode, encode!进行相关的编码操作。encodingruby1.9中为每个字符串对象增加了encoding信息?1231.9.3p392转载 2016-08-27 16:19:58 · 1007 阅读 · 0 评论 -
ruby redo和retry的区别
redo和retry都是用来重新执行部分循环,但不同点在于:redo只是重新执行当前循环,而retry重新执行整个循环。redo举例:("a".."f").each do |i| puts "Value: #{i}" redo if i > "c"end结果显示,只有最后的迭代(c)被重复了:Value: aValue: bValue: cValue: cValue: cValu原创 2016-07-01 20:00:14 · 1083 阅读 · 4 评论 -
并行赋值, *号赋值
首先 所有的右值被评估,从左到右,并且收集到一个数组中(除非它已经是数组),这个数组将是整个赋值的返回结果然后 开始检查左边,如果只有一个元素,那么这个数组就是最终的结果 ex: a = 1,2,3,4 # a=[1,2,3,4] => [1,2,3,4] b= [1,2,3,4] # b=[1,2,3,4] =>[1,2,3,4] 如果左边包含原创 2016-06-29 18:34:23 · 654 阅读 · 0 评论 -
外部迭代器(external iterators)
ruby 自带了一个内建的枚举器类(Enumerator class),它在ruby中实现外部迭代器 (external iterators) 你可以在 array 或者 hash 上调用to_enum来建立一个enumerator的对象 ex: a = [1,2,5] b={:a=>"sdf",:b=>"god"} a_en = a.to_enum a_en原创 2016-06-04 02:39:58 · 495 阅读 · 0 评论 -
inject
介绍 inject 方法定义在 module Enumerable 中,它让你可以通过集合中的元素 来通过某种计算得到一个值[1,3,5,7].inject(0){|s,i| s +i} #=> 16[1,3,5,7].inject(0){|s,i| s *i} #=>105 inject工作方式(用上面的例子来讲解): 当关联的block第一次被调用的时候:s被赋予参数的值, i 被原创 2016-06-03 18:31:28 · 621 阅读 · 0 评论 -
blocks(块)
写法 两种写法 {} / do..end note: 一般一行代码用{},多行代码用do..end1. [1,2,3].each {|i| puts i}2. [1,2,3].each do |i| puts i end一些重要的规则如果在块的内部有一个变量(variable)的名字和在同一作用域中的块的外部变量的名字一样的话,那么他们表示同一个变量。ex:原创 2016-05-26 16:04:42 · 636 阅读 · 5 评论 -
ruby中* 的部分功能
正常的乘法功能 3*4==12 #=>true数组*integer [1,23,[24,5]]*2 #=> [1,23,[24,5],1,23,[24,5]]创建数组 *a = 1,2,”sdf” 相当于 a= [1,2,”sdf”]字符串*integer “hello”*2 #=>”hellohello”a = [1,2] def method(*a) == def met原创 2016-05-27 11:46:25 · 277 阅读 · 1 评论 -
ruby 的initialize方法 and 实例变量是怎么样工作的
initialize 是一个ruby程序特别的方法,当类(class)使用new 方法实例化一个新的对象的时候,ruby分配一些内存控制这个未初始化的对象,然后调用这个对象的initialize方法,将传给new方法的参数传入initialize方法 note: 你可以在这个方法里写一些代码去设置你的对象原创 2016-05-17 17:22:18 · 1218 阅读 · 0 评论 -
属性(attributes),方法(methods)
属性 属性就是一个方法,有时候属性简单的返回一个实例变量的值,有时候返回一个计算的结果,有时候他们是用=结尾(example: name=)的方法用来改变对象的状态。 通过方法可以在外部获取或者修改对象的状态,我们称这个方法为属性方法只能在类(class)中执行的动作(action)我们称之为常规方法原创 2016-05-17 23:47:48 · 902 阅读 · 0 评论 -
ruby 的 require require_relative
require require 是 kernel的一个方法 require filename 如果filename 是一个相对路径 则从 $LAOD_PATH寻找相应的文件(.rb,.so,.dll) note: $LOAD_PATH 指的是Ruby读取外部文件的一个环境变量,其实和windows的环境变量是一个概念。Ruby会在这个环境变量的路径中读取需要require的原创 2016-05-18 00:39:07 · 1920 阅读 · 0 评论 -
ruby access control(public,protected,private)
public methods public methods 可以被所有人访问,他没有访问控制, note: 方法默认是public的,(除了initialize方法,它总是私有的)protected methods protected methods 只能被(定义方法的类或者它的子类)的对象调用,并且 访问只能在(定义方法的类或者它的子类)进行。private methods pri原创 2016-05-18 14:34:41 · 271 阅读 · 0 评论 -
ruby system 的用法
system 可以执行命令行命令 system(” “)括号里面的参数的写法与windows CMD的语法相差不多:system(“cd .. && 1.bat”)原创 2016-05-18 15:24:15 · 3141 阅读 · 0 评论 -
ruby中的变量(variables)
variables 在ruby中变量不是对象,变量只是对象的一个引用exampleperson1 = "Tim"person2 = person1person1[0] = 'J'puts "person1 is #{person1}"puts "person2 is #{person2}"produces:person1 is Jimperson2 is Jim原创 2016-05-19 15:23:49 · 300 阅读 · 0 评论 -
计算两点经纬度的距离
mysql 函数DROP FUNCTION IF EXISTS func_calcDistance;CREATE FUNCTION func_calcDistance( origLng DECIMAL(20,6), origLat DECIMAL(20,6), longitude DECIMAL(20,6), latitude DECIMAL(20,6))RET原创 2017-09-01 12:23:36 · 952 阅读 · 0 评论