Computer >> 컴퓨터 >  >> 프로그래밍 >> Ruby

Ruby 3.4 릴리스 하이라이트:주요 기능 및 업데이트

Ruby의 전통에 따라 핵심 팀은 2024년 12월 25일에 Ruby 3.4를 출시했습니다! 우리처럼 Ruby를 좋아하신다면 Ruby 3.4의 새로운 기능이 무엇인지 궁금하실 것입니다. 이번 릴리스에는 큰 변화가 없지만 몇 가지 정말 멋진 점을 알아두시면 좋습니다.

Ruby 3.4 릴리스 하이라이트:주요 기능 및 업데이트

먼저 몇 가지 언어 변경 사항을 살펴보겠습니다.

언어 변경

언어 변경은 대부분의 Ruby 개발자에게 가장 즉각적으로 관련된 변경 사항입니다. 각각에 대해 간단히 살펴보겠습니다!

고정된 문자열 리터럴

잠시라도 Ruby를 작성해 본 적이 있다면 아마도 다음으로 시작하는 파일을 본 적이 있을 것입니다:

# frozen_string_literal: true

위의 예는 마법의 댓글입니다. , 실제로 Ruby 인터프리터에 의미가 있습니다! 이 주석은 인터프리터에게 이 파일의 각 문자열을 마치 freeze가 있는 것처럼 처리하도록 지시합니다. 그것을 불렀다. 이 매직 코멘트가 포함된 파일의 문자열을 수정하려고 하면 런타임 오류가 발생합니다.

Ruby 3.4에서는 문자열이 작동합니다. 마치 기본적으로 동결된 것처럼 말이죠. 이를 변경하려고 시도하면 오류 대신 사용 중단 경고가 발생합니다. Ruby의 향후 버전에서는 기본 고정 문자열 리터럴을 변경하려고 하면 예외를 발생시켜 강제로 적용할 것입니다. 이 전환 기간은 Ruby 개발자에게 앱을 마이그레이션할 시간을 제공합니다.

기본 블록 매개변수

Ruby 3.4에는 짧은 코드 블록을 더 깔끔하게 만들기 위해 기본 블록 매개변수가 도입되었습니다.

Ruby 2.7 이전에는 each를 사용하여 배열의 각 요소를 인쇄했습니다. 메소드는 다음과 같습니다:

[1, 2, 3].each { |item| puts item }

Ruby 2.7에서는 이름을 지정할 필요가 없도록 번호가 매겨진 매개변수를 도입했습니다. Ruby 2.7 이후에는 다음과 같은 코드를 작성할 수 있습니다:

[1, 2, 3].each { puts _1 }

Ruby 2.7의 개선 사항은 더 간단하지만 명확하지는 않습니다. 이 Ruby 구문에 익숙하지 않다면 여기서 무슨 일이 일어나고 있는지 이해하는 데 어려움을 겪을 수 있습니다. Ruby 3.4에서는 이와 동일한 작업을 수행하는 훨씬 더 나은 방법을 도입합니다:

[1, 2, 3].each { puts it }

키워드 스플래팅 nil

3.4 이전 Ruby 버전에서는 이중 표시 연산자(**)를 사용합니다. ) nil 포함 TypeError을 올렸습니다 . nil 때문에 이런 종류의 의미가 있습니다. 암시적으로 해시로 변환될 수 없습니다.

Ruby 3.4에서는 이에 대한 간단한 변경 사항을 제공합니다. 이는 암시적으로 nil를 변환합니다. 해시로. **에 전화 걸기 nil에서는 **를 호출하는 것과 같습니다. 해시.

핵심 수업 업데이트

핵심 클래스 업데이트는 언어 변경만큼 Ruby 개발자에게 즉각적으로 관련되지는 않지만 확실히 이해할 가치가 있습니다!

예외#set_backtrace

Ruby 문제 추적기에 대한 기능 요청에서는 Ruby 3.4에서 이 변경 사항이 적용되기 전에 문자열 배열을 사용하여 역추적을 "손실"로 설정하는 것에 대해 설명했습니다. 이전에 #backtrace_locations에서 예외가 nil을 반환했습니다. .

Ruby 3.4에서는 Exception#set_backtrace Thread::Backtrace::Location를 허용합니다. Backtrace를 다시 빌드할 수 있도록 배열  인스턴스이며 완전히 작동하는 예외가 있습니다.

범위#크기

Range#size Ruby 3.4에도 새로운 동작이 있습니다. size 범위인 경우 호출되는 항목은 반복 가능하지 않습니다. Ruby는 이제 TypeError를 발생시킵니다. . 이는 size를 호출하는 경우에만 알 수 있는 동작의 작은 변경 사항입니다. 범위의 작은 하위 집합에 대해.

Ruby 3.4의 새로운 변경 사항

Ruby 3.4의 또 다른 작은 변화는 사용하지 않는 블록에 전달되는 메서드입니다. 장황한 모드로 실행할 때 이제 Ruby는 블록을 사용하지 않는 메서드에 블록을 전달하면 경고를 표시합니다.

Ruby 3.4가 Array.each의 성능을 향상시킨다는 소식을 듣고 기뻐하실 수도 있습니다. 구현 재작성으로 인해!

마지막으로 오류 메시지와 역추적이 표시되는 방식에 대한 또 다른 업데이트가 있습니다. 이제 Ruby는 관련성이 있는 경우 역따옴표 대신 작은따옴표를 사용하고 메서드 이름 앞에 클래스 이름을 표시합니다.

루비 3.4로 업그레이드

Ruby 3.4로 업그레이드하는 것은 대부분의 사람들에게 큰 도움이 되지 않습니다. 가장 노동 집약적인 부분은 불필요한 고정 문자열 마법 주석을 모두 제거하는 것입니다! Ruby 3.4의 모든 새로운 기능을 활용하기 위해 시간을 들여 업그레이드하면 좋은 결과가 있을 것이므로 지체하지 마세요!

그리고 잊지 마세요. 받은 편지함에서 더 많은 Ruby 뉴스와 이와 같은 튜토리얼을 받아보려면 Honeybadger 뉴스레터에 가입하세요!