搜尋老魚筆摘(本網誌及所屬協作平台)

2010-07-19

[Scala 教學範例] 中醫學(TCM)-經絡 API

夫言人之陰陽,則外為陽,內為陰。言人身之陰陽,則背為陽,腹為陰。言人身之藏府中陰陽。則藏者為陰,府者為陽。肝心脾肺腎五藏皆為陰,膽胃大腸小腸膀胱三焦六府皆為陽。 - 黃帝內經-素問-金匱真言論篇第四

繼前篇 [Java 教學範例] Google Guava 與中醫學(TCM)-經絡 API 後, 老魚再試著用 Scala 2.8 來完成這個與中醫學(TCM)的經絡查詢器的核心 API, Scala 有著眾多的特性, 這使得除了可以擁有完整的 Java 特性與 JVM 效能外, 在撰寫程序上更有著許多先進的思維.


以 Java 為陽, 內以 Scala 為陰 ...


以這個範例來說, 為了達到該物件能成為 單例(Singleton)模式, 我們不再需要像 Java 使用靜態(Static)宣告與靜態空間的資源, Scala 能較 Java 達到真正單例模式的保證, 在前一篇中我們為了使其集合容器(Container)物件能達到 不可變性(Immutable) 以加快處理性能與 RAM, 我籍助了 Google Guava 中的不變性集合 APIs, 而在 Scala 則本身早已將這部份納為核心實作, 故不依賴任何的外部實作參考, 在本例中也使用了 函數式程式語言 的基本特性, Scala 創造了在相較同是 JVM 的 Java 所未有的眾多新特性與簡潔內容, 非常值得推篤給您學習, 或者混搭在 Java專案開發中~


深度加入老魚的 Scala 學習分享團隊與筆記本,


1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package org.wisdomfish.tcm.scala

/**
 * 中醫藥學-TCMES-經絡
 * The meridian (simplified Chinese: 經絡;
 * traditional Chinese: 經絡; pinyin: jīngluò) 
 * @author WisdomFish.ORG - 郭朝益(ChaoYi, Kuo), http:://www.wisdomfish.org
 * @version 0.1 dev (SCALA 2.8)
 * @since 2010-07-19
 */

object Meritan {
 
 private val NOT_POINTS = 1
 private val IS_KEY_CNAME = 0
 private val handlefunc = (s: String) => s.split("\\s").toList
 private val Meridians = Map.newBuilder[String, List[String]] += (
   "LU" -> handlefunc("手太陰肺經 中府 雲門 天府 俠白 尺澤 孔最 列缺 經渠 太淵 魚際 少商"),
   "LI" -> handlefunc("手陽明大腸經 商陽 二間 三間 合谷 陽溪 偏歷 溫溜 下廉 上廉 手三里 曲池 肘髎 手五里 臂臑 肩髃 巨骨 天鼎 扶突 口禾髎 迎香")
   ) result
 
 def getMeridianIds: List[String] =
   Meridians.keys.toList
 def getMeridianCName(keyID: String) =
   Meridians(keyID) view(IS_KEY_CNAME)
 def getAcupuncturePointsSize(keyID: String) =
   Meridians(keyID).size - NOT_POINTS
 def getAcupuncturePoints(keyID: String) =
   Meridians(keyID) slice(NOT_POINTS, getAcupuncturePointsSize(keyID))
 def getAcupuncturePointName(keyID: String, numID: Int) =
   Meridians(keyID) view(numID)
}



老魚相關文章:

  1. [Java 教學範例] Google Guava 與中醫學(TCM)-經絡 API

1 則留言:

  1. 讚!實作程式語言和中醫經絡理論~
    我最近也在看中醫的經絡理論…^_^

    回覆刪除

熱門文章

大智若魚::人生處處是道場-站內SEO參考標籤雲