[Kotlin]研究 Kotlin 的函式宣告、函式型別、匿名函式、Lambda 與高階函式

Kotlin 的「函式」是所謂的「一級函式」,支援「高階函式」的用法,也可宣告「匿名函式」及「巢狀函式」,這些都是近幾年所興起的程式語言特色。

(原本這篇文章只是要整理一下 Kotlin 的函式用法而已,沒想到愈寫愈多!!)

名詞定義

先確認是否了解什麼是表達式? 什麼是敘述式?

Expression (表達式、表示式、運算式)

  • 它是一種「值」
  • 會傳回結果
  • 單獨存在沒有意義
  • 可放在「等號」的右邊
  • 可做為函式的引數 (Argument)
  • 可做為函式的傳回值
  • 例如: 數值、字串、布林值、null、運算後的結果、比較後的結果、匿名函式...

Statement (陳述式、敘述式、語句)

  • 由會產生「動作」的程式關鍵字及語法所組成的程式碼
  • 不會傳回結果
  • 例如: 流程控制、迴圈、宣告、函式、類別...

其它名詞定義

  • Literal: 字面值,例如: 103.14truenull'A'"This is a book"...
  • Parameter: 參數,函式「宣告」時所輸入的值,例如: fun example(參數) { }
  • Argument: 引數,函式「執行」時所引用的值,例如: example(引數)
  • Identifier: 識別字,命名變數、函式、類別...時所使用的文字
  • Lambda: 一種匿名函式的寫法或概念

繼續閱讀

Humble Bundle 與 Choice 精選包遊戲訂閱

2022/02/10 更新:
從 2022/02/01 開始,Choice 精選包就只會有一個訂閱方案 USD$11.99/月,可獲得當月所有遊戲 (通常是 9~12 個),比較接近早期的月包形式。


我們知道 Steam 是全世界最大的數位遊戲發行平台,上面有 30,000+ 款電腦遊戲,讓人買之不盡、玩之不竭! 但是,買遊戲就是要撿便宜,身為一個電腦遊戲的玩家絕不能不知道「Humble Bundle」。

Humble Bundle 是 Steam 的遊戲代理商之一,它的銷售方式主要有三種:

  1. Bundles: 遊戲的同捆包 (組合包、慈善包),通常為限時限量銷售。它讓客戶可以「自行決定」要購買同捆包的價格 (最低 USD$1 元),不同區間的價格可獲得不同數量的捆綁遊戲,你所支出的部份金額也會捐做公益。
  2. Choice 精選包: 也是遊戲同捆包的一種,但是改以「固定價格」讓客戶「長期訂閱」,客戶於每個月的第一個星期二可獲得當月的精選包,裡面遊戲的總價值通常會遠超過訂閱的費用。這也是本文所要介紹的重點。
  3. Store: 購買數位版的遊戲,若撘配 Choice 精選包訂戶的身份可再疊加 10%~20% 的折扣,或回饋至電子錢包

繼續閱讀

Evernote 最佳化資料庫

我從 2010 年開始使用 Evernote,我將所有的記事、圖片都往 Evernote 丟,我也有使用它的共用與協作功能,並且付費昇級成了專業版。

用了無數年的 Evernote,這陣子它的反應變慢,偶爾還會發生「沒有回應」的狀況,我想應該是要好好給它修理一下了。

我查詢到舊版的 Evernote 可以執行 Evernote.exe /DebugMenu,從「[Debug]」選單裡執行「Optimize Database」,但是在新版 Evernote 的「[Debug]」選單卻找不到這個項目!

原來新版 Evernote 已經改了,不需再啟用 DebugMenu,只要:

  1. 按住鍵盤的 Ctrl,用滑鼠點選「說明(H)」選單,就會看到多出來一整排的隱藏功能:
  2. 點選「最佳化資料庫」,然後靜靜的等它跑完:

Evernote 最佳化資料庫會更新記事、重建全文搜尋索引、重建記事屬性索引。

我原本的資料庫大小約 2.2GB,有 5800 則記事,整個最佳化的時間約 50 分鐘 (非 SSD 硬碟),重整完變成 1.7GB,大約減掉了 23% 的贅肉。

參考網頁

  1. 最佳化Evernote軟體端圖文資料庫,你覺得瀏覽搜尋更快了嗎?
  2. Evernote 5.0 的進階搜尋功能 | Vixual

如何透過 Zapier 實作「Send to Kobo」功能

Amazon Kindle 陣營的「Send to Kindle by E-mail」可以把電子書直接 E-Mail 到 Kindle 去閱讀,這樣的功能再與 Calibre 相結合更是如虎添翼。但是 Kobo 一直沒有這樣的機制!!

最近 Kobo Forma 將韌體更新至 4.18.13737 之後,會得到了一個全新的連結 Dropbox 功能,這功能讓我們可以把 Dropbox 做為額外的雲端書櫃。於是我就想到,能否也利用 Dropbox 來做到類似 Send to Kobo 的功能。

終於我透過了 Zapier 實作出了一鍵將電子書寄送到 Dropbox 去讓 Kobo 讀取,完成了一個非官方版的「Send to Kobo」,以此做為本篇的教學。

不過呢,因為目前 Kobo 只有最頂級的 Forma 可以連結 Dropbox,所以要套用本網頁的教學,原則上你得要有一台 Kobo Forma。但是,假如你就是脾氣硬、骨頭也很硬,硬是不想買一台 Kobo Forma 的話,也是可以把本網頁當成是 Zapier 的入門教學啦──學習如何將 Gmail 的附件上傳至 Dropbox。

繼續閱讀