1

次の URL からチュートリアルを読んでいます: http://www.smartjava.org/content/tutorial-getting-started-scala-and-scalatra-part-iii

コードのスニペットを次に示します。

class BidRepository extends RepositoryBase {

  object BidMapping extends Table[(Option[Long], Long, Double, Double, String, Long, Long)]("sc_bid") {
      def id = column[Option[Long]]("id", O PrimaryKey)
      def forItem = column[Long]("for", O NotNull)
      def min = column[Double]("min", O NotNull)
      def max = column[Double]("max", O NotNull)
      def currency = column[String]("currency")
      def bidder = column[Long]("bidder", O NotNull)
      def date = column[Long]("date", O NotNull)

      def noID = forItem ~ min ~ max ~ currency ~ bidder ~ date
      def * = id ~ forItem ~ min ~ max ~ currency ~ bidder ~ date
  }

ここで理解できていない~のは、ここで使用されているものですか? noIDおよび*メソッドが呼び出されると、正確には何が起こっているのでしょうか? ここには理解するのに十分なコンテキストがありますか、それとも~どこにも見られない暗黙の値がありますか?

4

1 に答える 1

0

この例では、チルダは、2 つの列の結果を結合することを意味するコンビネータです。* のように連続的に連鎖している場合、これらの列すべてを 1 つの結果オブジェクトとしてまとめた結果を返すことを意味します。これは、呼び出された列クラスに関数があり、~中置表記を使用してそれを呼び出していることを意味します。実際にはもっと似ています。

columnA.~(columnB)
于 2013-06-19T18:52:21.147 に答える