[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。

继续阅读