2024-04-04
This commit is contained in:
88
src/04_method.rb
Executable file
88
src/04_method.rb
Executable file
@@ -0,0 +1,88 @@
|
||||
#!/usr/bin/ruby
|
||||
|
||||
# 메서드
|
||||
|
||||
def do_something
|
||||
puts "Hello"
|
||||
end
|
||||
|
||||
=begin
|
||||
* 메서드 이름은 소문자와 숫자, 밑줄문자등을 사용합니다. 유니코드 문자도 괜찮습니다.
|
||||
* '!' : 뭔가 주의가 필요한 메서드 뒤에는 '!'를 붙입니다.
|
||||
* '?' : true/false를 반환하는 메서드 뒤에는 '?'를 붙입니다.
|
||||
* '=' : 값을 할당하는 셋터 메서드 뒤에는 '='를 붙입니다.
|
||||
=end
|
||||
|
||||
def plus_something(x, y=1) # 매개변수를 받을 수 있습니다. y에는 기본값을 줘봤습니다.
|
||||
x + y # 'return'을 사용하지 않아도, 제일 마지막 문장의 값이 반환됩니다.
|
||||
end
|
||||
|
||||
def get_something(*args) # 변수 이름 앞에 '*'을 붙여서 임의 길이의 매개변수를 전달 받을 수 있습니다.
|
||||
puts "Hello"
|
||||
end
|
||||
|
||||
def get_block(&block) # 변수 이름 앞에 '&'을 붙여서 블록을 전달 받을 수 있습니다.
|
||||
block.call(self)
|
||||
end
|
||||
|
||||
# 예외 처리
|
||||
|
||||
def my_method
|
||||
begin
|
||||
# 여기서 예외가 발생하면,
|
||||
rescue
|
||||
# 여기에서 예외를 처리합니다.
|
||||
end
|
||||
end
|
||||
|
||||
def my_method # 이렇게도 작성할 수 있습니다.
|
||||
# 여기서 예외가 발생하면,
|
||||
rescue
|
||||
# 여기에서 예외를 처리합니다.
|
||||
else
|
||||
# 예외가 발생하지 않았을 때 처리할 내용
|
||||
ensure
|
||||
# 예외가 발생했든 말든 처리할 내용
|
||||
end
|
||||
|
||||
|
||||
# 메서드 호출
|
||||
|
||||
my_method()
|
||||
|
||||
my_method # 괄호는 없어도 됩니다.
|
||||
|
||||
my_method(x,y)
|
||||
my_method x, y
|
||||
|
||||
array = [1,2,3]
|
||||
my_method(*array) # my_method(1,2,3)과 같습니다.
|
||||
|
||||
hash = {a:1,b:2}
|
||||
my_method(**hash) # 해시에는 '**'를 사용합니다.
|
||||
|
||||
my_method do # 메서드에 매개변수로 블록을 전달합니다.
|
||||
# do something
|
||||
end
|
||||
|
||||
my_method { # 메서드에 매개변수로 블록을 전달합니다.
|
||||
# do something
|
||||
}
|
||||
|
||||
|
||||
|
||||
a = [1,2,3]
|
||||
b = ["a","b","c"]
|
||||
c = a.append(*b).reverse # 메서드 호출을 연결
|
||||
puts c
|
||||
|
||||
reg = /foo/
|
||||
"Hello".match(reg)&.values_at(1,2) # '&'를 붙이면 결과가 nil일 때에 이후 메서드가 실행되지 않도록 합니다.
|
||||
|
||||
|
||||
|
||||
|
||||
END{
|
||||
# https://ruby-doc.org/3.2.2/syntax/methods_rdoc.html
|
||||
# https://ruby-doc.org/3.2.2/syntax/calling_methods_rdoc.html
|
||||
}
|
||||
Reference in New Issue
Block a user