inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

예제로 뿌수는 코틀린 Kotlin 76제

중위함수, to/onto

해결된 질문

377

sson

작성한 질문수 2

1

안녕하세요, 자바/파이썬 개발자는 아니지만 안드로이드 앱개발을 위해 코틀린 문법을 교육 중인 수강생입니다.

친절하신 설명과 더불어 바로 실습할 수 있는 강의자료 덕에 좀 더 이해도 있는 수업을 진행할 수 있어 감사드립니다. 실습 도중 문의사항이 있어 글 남깁니다.

중위함수 강의 중 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)

android kotlin backend

답변 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 여기에 지역함수에 대한 설명도 살짝 나오는데, 선언 이후에만 유효하다는 얘기는 따로 나오지 않았습니다. 지역 변수의 선언과 마찬가지이기 때문에 별도의 설명은 생략한 것 같습니다.

도움이 되셨기를 바라며, 이후 과정도 응원드립니다!

1

sson

이해했습니다. 빠른 답변 감사합니다😄

3강 질문

0

13

1

강의 듣는 중인데,

0

23

1

36강 오탈자가 있는 거 같습니다.

0

18

2

Service Create/Update Record 운용과 Delete Record 미운용의 차이 질문

0

14

1

2강 nodejs 3단계 설명 질문

0

32

1

Sequence 관련 질문

1

29

2

Image Only Query

1

29

2

라이브 운영중인 환경의 테이블에 인덱스 추가시 고려사항

0

35

2

DDD 는 마이바티스와 잘 맞지 않는건가요?

0

46

1

스프링부트 버전 문의드립니다.

0

38

1

6강에 비디오가 이상해요

0

27

2

Json 요청 처리

1

33

2

진입 여부 판단 기준 질문

0

71

3

피그마 first draft 기능 질문

0

45

3

gRPC 실무에서 질문

0

35

2

upup 질문

0

55

2

data.ai 필터링 검색이 안됩니다!

0

45

1

다양한 관점의 코드 경험을 위해 개선하지 않은 코드

1

47

1

앱 리텐션에 대한 질문

0

48

2

[건의][6장][작전1] deprecated 메소드

1

48

2

[예제][3장][작전2] windows 에서 마지막 예제

0

38

1

Null 안정성 관련 질문

0

43

1

코틀린은 왜 final이 기본으로 선택한건가요?

1

524

1

맵 Map, 변환 map 강의가 동일합니다. 확인부탁드립니다.

2

396

1