중위함수, to/onto
안녕하세요, 자바/파이썬 개발자는 아니지만 안드로이드 앱개발을 위해 코틀린 문법을 교육 중인 수강생입니다.
친절하신 설명과 더불어 바로 실습할 수 있는 강의자료 덕에 좀 더 이해도 있는 수업을 진행할 수 있어 감사드립니다. 실습 도중 문의사항이 있어 글 남깁니다.
중위함수 강의 중 4번 주석 설명에서 to 와 onto는 같은 일을 한다고 하여, 3에도 적용시켜본 코드입니다. 4-1에서는 잘 작동하지만 3-1 코드는 정상 작동하지 않습니다.. 그 이유를 알고 싶습니다.
val pair = "자바" to "오라클" // 3
println(pair)
val pair1 = "자바1".to("오라클1")
println(pair1)
val pair2 = "자바2" onto "오라클2" // 3-1
println(pair2)
infix fun String.onto(other: String) = Pair(this, other) // 4
val myPair = "코틀린" onto "젯브레인스"
println(myPair)
infix fun String.to(other: String) = Pair(this, other) // 4-1
val myPair1 = "코틀린1" to "젯브레인스1"
println(myPair1)
답변 1
0
먼저, 수강 및 예리한 질문 감사드립니다.
말씀하신대로 해당 infix 함수는 확장 함수 형태이면서, 지역 함수로 선언했습니다.
infix fun String.onto(other: String) = Pair(this, other) // 4원래 있는 to함수를 따라한 함수를 똑같이 infix 함수로 만든건데요, 문제는 이게, main함수 안에서 지역함수로 선언했다는 점입니다. 지역함수는 마치 지역 변수를 선언한 상황처럼, 선언한 스코프에서, 그리고 선언 이후에만 유효합니다.
val a = "Hello"
println(a) // 1
println(b) // 2
val b = "World"여기서 2번이 b를 선언하기 전에 사용한 것과 마찬가지라고 이해해주시면 좋을 것 같아요.
해당 infix 확장함수를 아예 main함수 바깥으로 꺼내면 둘 다 정상 작동합니다. 지역함수의 특징 때문에 질문해주신 것 같습니다. https://kotlinlang.org/docs/functions.html 여기에 지역함수에 대한 설명도 살짝 나오는데, 선언 이후에만 유효하다는 얘기는 따로 나오지 않았습니다. 지역 변수의 선언과 마찬가지이기 때문에 별도의 설명은 생략한 것 같습니다.
도움이 되셨기를 바라며, 이후 과정도 응원드립니다!
Issuance 테이블에 status, couponId 인덱스가 꼭 필요할까요?
2
19
1
ProductController 에서 타협하지 않는다면 어떤 형태가 되나요?
1
23
2
보상형광고 노출율이 말도 안되게 낮습니다...
0
30
1
오픈톡 인원이 다 차서 들어가지를 못 하네요...
0
36
1
부하 테스트 시 설정 관련 질문드립니다
1
61
2
강의 영상이 나오질 않습니다...
0
84
6
kafka 이벤트 발행 실패 시 at-least-once를 보장하는 방법이 궁금합니다.
1
93
1
domain에 @Entity 와 Repository를 함께 둔 이유가 궁금합니다
1
78
1
장치 의존성과 CSR
0
54
1
혹시 강의 내용하면서 실습했던 것을 개인 깃에다 올려도 될까요?
0
45
1
안드로이드 조직 계정 수익 인증 관련
0
70
2
아무도 모르게 책 내시면 모르실 줄 알고!!
1
75
2
Jib 이미지 빌드에서 docker credential 관련으로 이슈가 있다면
1
100
1
스크립트에 대해 질문 있습니다.
1
74
1
같은 사용자가 연속된 중복 호출할 경우 어떻게 되는지 궁금합니다!
2
96
1
nestjs 강의는 없나요??
1
55
2
11장 미션에 이메일 남기는걸 누락했어요.
0
46
1
PlatformTransactionManager, ResourcelessTransactionManager 질문
1
81
2
시퀀스다이어그램은 무슨툴로 그리신건가요?
0
64
2
AdMob 계정 승인이 1개월 이상 지연되고 있습니다. 앱 검토와 순서가 어떻게 되는 건가요
0
125
2
6번 문제 질문입니다.
0
81
2
Null 안정성 관련 질문
0
62
1
코틀린은 왜 final이 기본으로 선택한건가요?
1
557
1
맵 Map, 변환 map 강의가 동일합니다. 확인부탁드립니다.
2
417
1





