루비랑 있으면 편해요.
지금, 나는 Ruby를 사용한 지 약 3일이 되었다. 나는 분명히 완전한 전문가이기 때문에 완전히 믿어야 한다(허허).만약 당신이 확실히 어떤 문제를 보았다면, 나를 바로잡아 주십시오!
루비exercism의
@dvik1950
에 많은 부분을 지도해 주셔서 감사합니다.나는 이 튀는 그림이 온화한 것에만 적합하다는 것을 알고 있지만, 그것은 너무 멋있어서 사용하지 않을 수 없다.너는 나의 생각을 바꿀 수 없다.
테스트
이것은 동적 언어의 일종이다.나는 매우 정적인 사람이기 때문에 단원 테스트는 거의 머리카락/수면이 빠지지 않는 가장 중요한 임무이다.
내가 발견한 가장 간단한 시작은 minitest:
$ gem install minitest
그런 다음 my_math_test.rb
:require 'minitest/autorun'
require_relative 'my_math'
# MyMath sanity tests
class MyMathTest < Minitest::Test
def test_times_two
# skip
assert_equal 8, MyMath.my_times_two(4)
end
end
주석 취소skip
는 테스트를 건너뛰기 때문에 전체 함수에 대한 주석/주석을 취소하는 것을 피합니다.그 밖에 MyMathTest < Minitest::Test
문법은 자류를 정의하는 방식이기 때문에 MyMathTest
는 Minitest::Test
에서 계승되었다.더 복잡한 해결 방안은
rspec
Ruby 함수를 사용하지 않고 테스트DSL을 제공한다.다음은 이 테스트의 가능한 모습입니다.describe MyMath do
it "multiplies 4 by 2" do
math = MyMath.new
expect(math.my_times_two(4)).to eq(8)
end
end
이것은 자바스크립트에서 사용Mocha과Chai를 떠올리게 한다.안내서here가 있습니다.%w
그러지 마십시오.
JOES = ["average", "DiMaggio", "morning"]
다음과 같이 하십시오.JOES = %w[average DiMaggio morning]
와!또한 %i
:SYMS = %i[one two three]
# [:one, :two, :three]
심벌 반대, 반대하다얼어붙다
너의
JOES
상수를 바꿀 생각은 없니?루비한테 진지하다고 말하고 얼려.JOES = %w[average DiMaggio morning].freeze
지금 그것은 실제로는 변하지 않는다!Ruby 상수에 대한 자세한 정보
를 참조하십시오.여기 있다 문자열 보간
기본적으로 그것은 해냈다.이것은 유효한 것이다.
def say_name(name)
output = "Hello, "
output << name
output << "!"
puts output
end
이렇게 하는 것이 더 좋다.def say_name(name)
puts "Hello, " + name + "!"
end
하지만 이걸 원할 수도 있다.def say_name(name)
puts "Hello, #{name}!"
end
계급
self
에서 방법을 다시 정의하여 MyClass.my_method
호출할 수 있도록 self
에서 현시적으로 정의할 수 있습니다.class MyClass
def self.my_method(str)
puts str
end
end
만약 당신이 많은 일을 했다면, 당신은 본 징집 클래스나 단례 클래스를 직접 열 수 있습니다.class MyClass
class << self
def my_method(str)
puts str
end
end
end
나는 설령 추가 선과 축소를 대가로 하더라도 이런 소음은 좀 작을 것이라고 생각한다.만약 당신이 매우 간결해지고 싶다면, 당신은 계속해서 점 연산자를 입력할 수 있습니다.class MyClass
end
def MyClass.my_method(str)
puts str
end
이것class << self
도 사유 방법을 만드는 가장 좋은 방법이다.class MyClass
class << self
private
def my_private_method(str)
puts str
end
end
end
그렇지 않으면 반드시 사용해야 한다private_class_method
. 나는 이것이 매우 메스꺼워 보인다고 생각한다.class MyClass
private_class_method def self.my_private_method(str)
puts str
end
end
속성 액세스
인스턴스 변수를 직접 공개할 수 있습니다.
class MyClass
def initialize
@value = 0
end
def show_value
puts @value
end
end
initialize()
를 사용하여 구조 함수를 정의합니다.그러나 Ruby에서는 Getter와 setter를 만드는 것이 매우 쉽고 일반적으로 더 유용합니다.다음 작업을 수동으로 수행할 수 있습니다.
class MyClass
def initialize
@value = 0
end
def value
@value
end
def value=(new_value)
@value = new_value
end
def show_value
puts value # don't point to the `@value` var, send the `value` message
end
end
일반적으로 attr_accessor
두 개를 동시에 생성하는 것이 좋습니다.class MyClass
attr_accessor :value
def initialize
@value = 0
end
def show_value
puts value
end
end
각각 attr_reader
또는 attr_writer
를 Getter나setter로 사용할 수도 있다.이렇게 하면 이 논리가 바뀌어야 한다면, 이 방법을 정의하기만 하면 모든 호출 사이트가 자동으로 새로운 논리를 반영할 수 있다는 장점이 있다.
구조체
우리가 동적 언어를 사용한다고 해서 복잡한 데이터에 플러그인 그룹 같은 것을 사용할 필요는 없다.Ruby는 구조화된 데이터에 대해 클래스를 제공하며 이러한 액세스 방법을 자동으로 제공합니다.
이것은 인위적인 예이지만 그렇지 않다.
class MyRect
attr_reader :rect_dims
def initialize(arr)
@rect_dims = arr
end
def show_size
puts "Size: #{rect_dims[0]}x#{rect_dims[1]}"
end
end
다음과 같이 하십시오.class MyRect
attr_reader :rect_dims
def initialize(arr)
@rect_dims = make_dim_struct(arr)
end
def show_size
puts "Size: #{rect_dims.width}x#{rect_dims.height}"
end
RectDims = Struct.new(:width, :height)
def make_dim_struct(arr)
RectDims.new(arr[0], arr[1])
end
end
이전과 마찬가지로 데이터 구조를 다시 변경해야 한다면, 관건은 그 정의를 한 곳으로 로컬화하는 것이다.구조 rubocop
는 Rubocop에 붙은 짧은 벨벳이다.다음과 같이 하십시오.
$ gem install rubocop
그리고 항상 이렇게 한다.$ rubocop myFile.rb
수정해야 한다고 말하는 모든 것을 수정해라. 무슨 말을 하는지, 왜 그런지 모르겠으면, 조사해 봐라.공부!이것은 Ruby Style Guide 의 비밀번호입니다. 이 글에서 나온 것입니다.
답장그것 계속
실제로 멋있는 게 많아요.
와 gsub
같은 방법은 내가 처음으로 탐색한 깜짝 놀라움이다.
Ruby의 핵심은 스크립트 언어입니다.명령이 잇따르다.잔혹함에 가까운 단순화
IRB를 열고 명령을 입력하는 것이 좋습니다.실제로 환경 인코딩에 매우 가깝습니다
Ruby는 약간 대상을 향하고 기능성이 있어서 대부분 같은 일을 할 수 있는 몇 가지 방법이 있다.이것은 약간 공짜 같다
여기 정말 많은 것들이 있어요.그것은 내가 이전에 사용했던 모든 언어를 거의 포괄했다.가장 명확한 해결 방안이나 가장 정확한 응용 모델을 확정하는 것은 간단한 수법이다
오래전부터 저는 루비를 연구하기 시작했습니다. 이것은 제가 처음으로 프로그래밍을 시도한 것입니다.나는 그것의 간결함을 좋아한다. 그리고
Ben Halpern
아주 재미있는 책이다. 만약 당신이 그것을 읽지 않았다면, 적어도 한번 시도해 보아야 한다. 설령 당신이 루비의 독특성 때문에 그것을 목표로 삼지는 않더라도.p>
하지만 더 경험이 많은 프로그래머로서 나는 언어가 가져다 주는 즐거움을 다시 한 번 느꼈다.다양한 유형의 언어로 구성된 컨텍스트가 루비를 효과적으로 적용하는 방법을 이해하는 데 도움을 준다고 생각합니다.일반적인 의미의 프로그래밍을 배우는 동시에 루비를 어떻게 사용하는지 배우는 것은 매우 어렵다. 비록 쉽게 시작하고 실행하지만
저는 개인적으로 루비를 첫 번째 프로그래밍 언어로 추천할 줄 몰랐어요.선택할 수 있는 범례가 이렇게 많은데 마찰은 이렇게 작다.네가 동의하느냐 동의하지 않느냐
라제이와 Unsplash의 도로 여행 사진
Reference
이 문제에 관하여(루비랑 있으면 편해요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/deciduously/getting-cozy-with-ruby-1l6f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)