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调用and*方法时到底发生了什么?这里是否有足够的上下文可以理解,或者是否~有一些我在某处看不到的隐含价值?

4

1 回答 1

0

在此示例中,波浪号是一个组合器,表示将两列结果组合在一起。当像 for * 一样连续链接在一起时,这意味着返回一个结果,该结果是所有这些列一起作为单个结果对象。这意味着在这些列类上调用了一个函数,~并且您正在使用中缀表示法并调用它。实际上,它更像是;

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