루비랑 있으면 편해요.

내가 루비를 처음 만났을 때, 나는 기본적으로 그것을 '동적 C++' 라고 여겼다. 왜냐하면 이것은 나의 가장 좋은 유형이기 때문이다.물론 조정이 필요하다.이 글은 Ruby에 특정한 습어를 논의했는데, 이러한 습어는 내가 알고 있는 개념과 직접적인 관계가 없고, C++, 자바, Python 등 클래스 기반의 OOP 언어를 사용했다고 가정합니다.
지금, 나는 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 문법은 자류를 정의하는 방식이기 때문에 MyMathTestMinitest::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
이것은 자바스크립트에서 사용MochaChai를 떠올리게 한다.안내서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의 도로 여행 사진

좋은 웹페이지 즐겨찾기