我需要將數據拆分爲多列。空白空間必須分佈在最後一列中。因此,如果我有四個元素和三列,列將具有這些元素數:2,1和1.在Scala中使用Int或者「或」運算符
我需要知道有多少列將被填滿。答案是:
val full = data.length % NUMBER_OF_COLUMNS
但問題是,項目數是列數的倍數,這個返回零,這不是我想要的。所以我能做:
val full = if (data.length % NUMBER_OF_COLUMNS == 0) NUMBER_OF_COLUMNS else
data.length % NUMBER_OF_COLUMNS
這工作,但不會覺得很「斯卡拉樣。」這絕對是冗長而笨拙的,其餘的操作需要存儲或執行兩次。 (在這裏,我選擇了後者的選項。)
有沒有更好的方法?
在Python,我會做基本使用or
運營商與Int
,像這樣:
full = len(data) % NUMBER_OF_COLUMNS or NUMBER_OF_COLUMNS
完成。但我想不出在斯卡拉類似的東西。它不存在還是我根本沒有看到它?
我更喜歡@迪瑪的解決方案,因爲它看起來更加緊湊,但這是目前爲止所有客觀性最好的解決方案。模式匹配是Scala的基礎。它的可讀性很強,很清晰,簡明扼要,回想起來看起來非常明顯,我覺得自己是一個完全沒有見過它的白癡。 – eje211