1
const red = '#f00'
const green = '#0f0'
const colors = {red, green} // creates {red: '#f00', green: '#0f0'}
루비에서 유사한 무언가를 달성 할 수있는 방법이 있나요 :
ES6의 자바 스크립트에서, 멋진 바로 가기가?
const red = '#f00'
const green = '#0f0'
const colors = {red, green} // creates {red: '#f00', green: '#0f0'}
루비에서 유사한 무언가를 달성 할 수있는 방법이 있나요 :
ES6의 자바 스크립트에서, 멋진 바로 가기가?
Ruby에는 이러한 구문이 없습니다. 정말 좋은
red = '#f00'
green = '#0f0'
colors = Hash[[:red, :green].map { |v| [v, eval(v.to_s)] }]
이인가 :
그러나 같은 일을 할 수 있을까? 아마도 두 개의 키만있는 것은 아니지만 아마도 수십 개의 키가있을 것입니다.
여기에는 eval()
을 사용하여 변수 값을 가져옵니다. 신뢰할 수있는 데이터에서만 실행하십시오! 인스턴스 변수 인 경우 (안전) instance_variable_get
:
@red = '#f00'
@green = '#0f0'
colors = Hash[[:red, :green].map { |v| [v, instance_variable_get("@#{v}")] }]
짧은 대답은 아니오입니다. 이런 식으로 동작하는 내장 함수는 없으며, 가장 잘 알고 있듯이 해시 생성을 위해'{}'을 오버로드 할 수 없습니다. –