0

以下にリストされている変数を定義する必要がある場合は、'''を使用して物事を機能させることができます

def MainTable = '''
         0S : MAKE-CALL
         0# : MAKE-CALL
         00 : MAKE-CALL
         (=Emergency) : EMERGENCY-CALL(sip: "911 =domain =dialPhone)
         (=N11) : MAKE-CALL(sip: #1v =domain =dialString)
         (=SpeedDial) : MAKE-CALL(sip: #1v =domain =dialString)
         (=PhoneNumber) : MAKE-CALL(sip: #1v =domain =dialPhone)
         (=ImmediateVSCs) : RETURN
         (=DelayedVSCs) : RETURN
         (x{1-20})S : MAKE-CALL(sip: #1 =domain =dialPhone)
         (x{1-20})# : MAKE-CALL(sip: #1 =domain =dialPhone)''';

一重引用符を使用してこのように定義すると、同じ変数がエラーをスローします

def MainTable = '
         0S : MAKE-CALL
         0# : MAKE-CALL
         00 : MAKE-CALL
         (=Emergency) : EMERGENCY-CALL(sip: "911 =domain =dialPhone)
         (=N11) : MAKE-CALL(sip: #1v =domain =dialString)
         (=SpeedDial) : MAKE-CALL(sip: #1v =domain =dialString)
         (=PhoneNumber) : MAKE-CALL(sip: #1v =domain =dialPhone)
         (=ImmediateVSCs) : RETURN
         (=DelayedVSCs) : RETURN
         (x{1-20})S : MAKE-CALL(sip: #1 =domain =dialPhone)
         (x{1-20})# : MAKE-CALL(sip: #1 =domain =dialPhone)';

1 compilation error:
unexpected char: ''' at line: 1, column: 17

一重引用符を使用してMainTable変数を使用するにはどうすればよいですか、すべてを1行にまとめたくありません

4

2 に答える 2

5

sbglasius による正解に加えて、 String 定義の先頭にある空白行をエスケープする必要がないためstripMargin()methodが非常に気に入っています。

def mainTable = '''0S : MAKE-CALL
                  |0# : MAKE-CALL
                  |00 : MAKE-CALL
                  |(=Emergency) : EMERGENCY-CALL(sip: "911 =domain =dialPhone)
                  |(=N11) : MAKE-CALL(sip: #1v =domain =dialString)
                  |(=SpeedDial) : MAKE-CALL(sip: #1v =domain =dialString)
                  |(=PhoneNumber) : MAKE-CALL(sip: #1v =domain =dialPhone)
                  |(=ImmediateVSCs) : RETURN
                  |(=DelayedVSCs) : RETURN
                  |(x{1-20})S : MAKE-CALL(sip: #1 =domain =dialPhone)
                  |(x{1-20})# : MAKE-CALL(sip: #1 =domain =dialPhone)'''.stripMargin()
于 2012-04-10T08:43:29.623 に答える
4

Javaで次のようにすることができます:

def MainTable = '\
     0S : MAKE-CALL\
     0# : MAKE-CALL\
     00 : MAKE-CALL\
     (=Emergency) : EMERGENCY-CALL(sip: "911 =domain =dialPhone)\
     (=N11) : MAKE-CALL(sip: #1v =domain =dialString)\
     (=SpeedDial) : MAKE-CALL(sip: #1v =domain =dialString)\
     (=PhoneNumber) : MAKE-CALL(sip: #1v =domain =dialPhone)\
     (=ImmediateVSCs) : RETURN\
     (=DelayedVSCs) : RETURN\
     (x{1-20})S : MAKE-CALL(sip: #1 =domain =dialPhone)\
     (x{1-20})# : MAKE-CALL(sip: #1 =domain =dialPhone)';

しかし、三重の一重引用符を使用しないことの意味がわかりません。先頭に追加されたスペースを取り除きたい場合は、文字列式に .stripIndention() を追加するだけです:

 def myMultilineString = '''
            Some text
            Some more text'''.stripIndent()
于 2012-04-10T07:29:24.147 に答える