나는 가독성을 높이기 위해 변수를 많이 사용하는 경향이 있지만 모나드 올 때, 나는 내 변수가 모나드 (들)Monad에 랩핑 된 변수 이름을 지정하는 방법은 무엇입니까?
def getUser(id: Int): Future[User] = ???
val _user1 = getUser(1)
val _user2 = getUser(2)
for {
user1 <- _user1
user2 <- _user2
} yield (user1, user2)
A (의 가능성 스택)에 싸여 그것을 명확하게하기 위해 내 자신의 대회와 함께
내 동료 중 일부는이 구문을 선호하는 경향이 :
val fUser1 = getUser(1) // makes it clear user is wrapped in a Future
을하지만이 오류가 발생하기 쉬운으로 될 수 있으리라 생각합니다 :
// getUser now returns an option
def getUser(id: Int): Option[User]
val fUser1 = getUser(1) // still compiles but is misleading
// same, if getUser returns a Future[Either[String, User]]
val fUser1 = getUser(1) // fUser1 looks like a Future[User] to me
내가 접두사 생각 버지니아 riables 이름은 _에 의해 최악의 솔루션이지만 이상적이지 않습니다 ... 당신은 해결책이 있습니까?
과용/잘못된 사용은 좋은 생각이 아닙니다. 'Monad '도 예외는 아닙니다. 필자가 생각하기에,'Int'를'Future'에 래핑하는 것은 쓰레드 오버 헤드의 막대한 비용을 추가하는 것 이외의 목적을 가지고 있지 않습니다. 이름에 대해 궁금한 점이 있다면'userFuture1' 또는'user1Future'의 스키마를 따를 수 있습니다. –
이것을 [헝가리 표기법] (https://en.wikipedia.org/wiki/Hungarian_notation)이라고합니다. – Jesper
'val user1 : Future [User] = getUser (1)'에 대해 살펴본 다음, 타입 선언을 한 번 볼 수있는 충분한 범위에 있는지 확인하십시오. – Tom