제1장 Strings(4):다른 종류의 변 수 를 문자열 로 변환 합 니 다.

3400 단어 scalaStringrawfS
Problem:
    변 수 를 문자열 로 바 꾸 려 면 어떻게 해 야 합 니까?
Solution
    Scala 2.10 부터 암시 적 전환 을 사용 할 수 있 습 니 다.이것 은 어느 정도 Perl,PHP,Ruby 와 유사 합 니 다.
    스칼라 의 문자열 삽입 값 을 사용 하려 면 먼저 변 수 를 포함 하 는 문자열 앞 에 알파벳 s 를 추가 한 다음 문자열 의 변수 앞 에$문 자 를 추가 해 야 합 니 다.우 리 는 println 방법 을 사용 하여 테스트 합 니 다.    
scala> val age = 33
age: Int = 33

scala> val wigth = 200.0
wigth: Double = 200.0

scala> val weight = 200.0
weight: Double = 200.0

scala> println(s"$name is $age years old, and wights $weight pounds")
Fred is 33 years old, and wights 200.0 pounds

    스칼라 공식 문서 에서 문자열 삽입 값 에 대한 설명 에 따 르 면 s 접두사 가 있 는 문자열 을 사용 하려 고 할 때 문자열 처리 글자 의 양 을 만 들 었 습 니 다.이 예 에 서 는's 문자열 삽입 값'을 사용 하여 변 수 를 문자열 에 삽입 할 수 있 습 니 다.이 위 치 는 변수 값 으로 대 체 됩 니 다.s 를 모든 문자열 의 글자 크기 에 추가 하기 전에 문자열 에 변 수 를 직접 사용 할 수 있 습 니 다.
Using expressions in string literals
    문자열 에 변 수 를 추가 하 는 것 외 에 표현 식 도 사용 할 수 있 습 니 다.
    아래 의 이 예 에서 우 리 는 age 에 1 을 더 한 후에 인쇄 합 니 다.
scala> println(s"$age next year is ${age + 1}")
33 next year is 34

    ==문자열 에 삽 입 된 표현 식 에서 도 사용 할 수 있 습 니 다.
scala> println(s"Your age is 33:${33 == age}")
Your age is 33:true

    ${}을 사용 하여 문자열 내 장 된 변수 에 클래스 필드 를 인쇄 합 니 다:
scala> case class Student(name:String, age:Int)
defined class Student

scala> val stu = Student("ming", 18)
stu: Student = Student(ming,18)

scala> println(s"${stu.name}'s age is ${stu.age}")
ming's age is 18

    ${}을 사용 하지 않 으 면 다음 효 과 를 볼 수 있 습 니 다:
scala> println(s"$stu.name's age is $stu.age")
Student(ming,18).name's age is Student(ming,18).age

    이 형식 은$stu.name 이 하나의 전체 가 아니 라$stu 와.name 두 부분 으로 나 뉘 어 인쇄 된 것 을 발견 할 수 있 습 니 다.
s is a method
    s 를 문자열 의 글자 크기 앞 에 놓 는 것 은 사실상 하나의 방법 이다.문자열 에 변수 값 만 넣 는 것 처럼 보이 지만 최소한 두 가지 좋 은 점 이 있 습 니 다.
  • Scala 는 더 많은 플러그 인 함 수 를 제공 하여 강력 한 도움 을 주 었 습 니 다
  • 당신 도 자신의 삽입 값 함수
  • 를 정의 할 수 있 습 니 다.
        이러한 장점 을 볼 수 있 도록 다른 플러그 인 함 수 를 보 겠 습 니 다.
    The f string interpolator (printf style formatting)
        솔 루 션 의 예 에서 weight 는 200.0 으로 인쇄 되 었 습 니 다.이것 은 아무런 문제 가 없 지만,소수점 뒤의 더 많은 자릿수 를 유지 하거나,아예 소수점 뒤의 숫자 를 없 애 려 면 어떻게 해 야 합 니까?
        그러면 우 리 는'f 문자열 삽입 함수'를 직접 사용 할 수 있 습 니 다.printf 방식 을 사용 하면 문자열 의 변수 인쇄 형식 을 지정 할 수 있 습 니 다.다음은 weight 인쇄 를 지정 하여 두 개의 소 수 를 유지 합 니 다.
    scala> println(f"$name is $age years old, and weighs $weight%.2f pounds.")
    Fred is 33 years old, and weighs 200.00 pounds.
    
    scala> println(f"$name is $age years old, and weighs $weight pounds.")
    Fred is 33 years old, and weighs 200.0 pounds.

        정수 부분 만 유지:
    scala> println(f"$name is #age years old, and weight $weight%.0f pounds")
    Fred is #age years old, and weight 200 pounds

        f 문자열 삽입 방안 을 사용 하려 면 다음 두 단계 로 진행 해 야 합 니 다.
  • 문자열 글자 의 양 앞 에 f
  • 를 추가 합 니 다.
  • $변수 뒤에 printf 스타일 을 직접 따라 포맷 방식 을 만 듭 니 다
  • The raw interpolator
        s 와 f 함 수 를 보충 하기 위해 Scala 2.10 은 다른 플러그 함수 raw 를 포함 합 니 다.Raw 플러그 인 함 수 는 문자열 글자 의 전의 문자 가 작용 하 는 것 을 방지 할 수 있 습 니 다.다음은 raw 가 어떻게 일 하 는 지 살 펴 보 겠 습 니 다.
    scala> s"foo
    bar" res15: String =  foo bar scala> raw"foo
    bar" res16: String = foo
    bar

    좋은 웹페이지 즐겨찾기