偶尔还是要听点抒情点的...
韩剧推荐 : Live
第一集男女主角警校考试准备的那段蛮激励人心的,对素人想转职工程师的人而言,哈。
以下一样只分享自己初学时常混淆的部分。
我没有办法写得比书中更详细。
以def定义
def method_name(参数) #方法不一定要有参数。
#流程
end
#呼叫方式
method_name(参数)
#不是一定要加p或puts才是使用方法,p与puts是印出方法使用後回传的结果。
#方法的名字符合变数的命名规则。
如下
2.7.3 :002 > def method_name(string)
2.7.3 :003 > "#{string}"
2.7.3 :004 > end
=> :method_name
2.7.3 :005 > method_name("test string")
=> "test string"
2.7.3 :006 > p method_name("test string")
"test string"
=> "test string"
#在进入Rails後,就会常看到这样
2.7.3 :007 > def method_name(string)
2.7.3 :008 > @test = "#{string}"
2.7.3 :009 > end
=> :method_name
2.7.3 :012 > @test
=> "test string"
@test是实体变数。
以class定义,以常数命名,不加参数,可继承。Rails 中 class != model 。
calss Class_name
def method1
#流程
end
def method2
#流程
end
end
Rails常会看到
class Class_name < SpuerClassName
end
类别内可以有许多自己建立的"实体方法",由类别产生的"实体"都可使用这些方法,所以类别像一张设计图,由这张设计图设计出来的产物,我们称为实体,实体由new这个"类别方法"产生出。
类别方法:此类别可用的方法。基本建立方式如下
def self.method_name
#流程
end
#self初期请想成那个类别自己。
自己建立的任何类别,都有自己本身内建的类别方法。
2.7.3 :037 > class Abc
2.7.3 :038 > def initialize(string)
2.7.3 :039 > @abc = string
2.7.3 :040 > end
2.7.3 :041 >
2.7.3 :042 > def split()
2.7.3 :043 > @abc.split
2.7.3 :044 > end
2.7.3 :045 > end
=> :split
2.7.3 :047 > Abc.superclass
=> Object
没有指定的话,自行建立的类别都会继承於Object类别。
实体方法:实体可以用的方法。
开始使用Rails後,就会更清楚了。
用modlue定义
module Module_name
def method_name
end
end
在开发时,有一些功能(method),可能很多类别都会用到或是开发後发现重复,我们可以将这些方法集中成模组,让类别"挂上去"使用。
class Class_name
include Module_name #挂上去的方式
end
模组与类别差异?
模组没有new这个方法,所以不会有实体是模组new出来的。
模组之间没有继承
快可以开始介绍Rails了吧?
类别用new产生实体,new是内建方法,为何还需要自己建立initialize方法?
方法的存取控制:public、protected、private。
懒人三方法:attr_reader、attr_writer、attr_accessor。
这些不留到下篇当文章用了。请看好书来解惑,为自己学Ruby on Rails。
连结:https://leetcode.com/problems/reverse-string/
def reverse_string(s)
#实作
end
p reverse_string(["h","e","l","l","o"]) #=> ["o","l","l","e","h"]
p reverse_string(["H","a","n","n","a","h"]) #=> ["h","a","n","n","a","H"]
def reverse_string(s)
s.reverse!
end
结束,我太无耻了.....
在不知道黑魔法前我是这样想的。
解法:建立一个新空阵列,从旧阵列由後开始一个一个摆进新阵列。
解法2:将阵列集合成一个字串,将字串反转後,再拆成阵列。
我比较适合战士!
<<: Vue 使用 errorHandler, warnHandler 即时拦截网页错误
考试的难易 一个好的考试,通常会让你准备的很辛苦!但通过考试後会让你一直駡,怎麽考出来的题目没有想像...
铁人赛 这是一场疯狂的知识盛宴。有别於第一日提出的特别关注系列清单,今天我则会列出直到最後一天我都还...
在JAVA中,可以设定一些的变数,例如:long, int, char, float,...等等 l...
在开始学习机器学习之前,我们得先准备好环境,我们使用python来当我们的程序语言,稍微介绍一下py...
昨天分享如何从中间弹出、由下而上弹出 UIAlertController 今天会介绍: 显示多个按钮...