V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
xuanwu
V2EX  ›  分享创造

中文代码示例之 Programming in Scala 笔记第四五六章

  •  
  •   xuanwu · 2018-11-16 17:03:52 +08:00 · 1499 次点击
    这是一个创建于 1959 天前的主题,其中的信息可能已经有所发展或是发生改变。

    中文编程知乎专栏原文: https://zhuanlan.zhihu.com/p/50093833

    节选:

    第六章 功能对象

    此章的例子与之前的"初步尝试将传统学科的内容程序 /数据化"有些共鸣, 以后的数学知识部分可以参考此实现.

    class 有理数(分子: Int, 分母: Int) {
      require(分母 != 0)
      private val 公约数 = 最大公约数(分子.abs, 分母.abs)
    
      val 分子值: Int = 分子 / 公约数
      val 分母值: Int = 分母 / 公约数
    
      def this(数: Int) = this(数, 1)
    
      def + (数: 有理数): 有理数 =
        new 有理数(
          分子值 * 数.分母值 + 数.分子值 * 分母值,
          分母值 * 数.分母值
        )
    
      def + (数: Int): 有理数 =
        new 有理数(分子值 + 数 * 分母值, 分母值)
    
      def - (数: 有理数): 有理数 =
        new 有理数(
          分子值 * 数.分母值 - 数.分子值 * 分母值,
          分母值 * 数.分母值
        )
    
      def - (数: Int): 有理数 =
        new 有理数(分子值 - 数 * 分母值, 分母值)
    
      def * (数: 有理数): 有理数 =
        new 有理数(分子值 * 数.分子值, 分母值 * 数.分母值)
    
      def * (数: Int): 有理数 =
        new 有理数(分子值 * 数, 分母值)
    
      def / (数: 有理数): 有理数 =
        new 有理数(分子值 * 数.分母值, 分母值 * 数.分子值)
    
      def / (数: Int): 有理数 =
        new 有理数(分子值, 分母值 * 数)
    
      override def toString = 分子值 + "/" + 分母值
      
      private def 最大公约数(甲: Int, 乙: Int): Int =
        if (乙 == 0) 甲 else 最大公约数(乙, 甲 % 乙)
    }
    
    4 条回复    2018-11-17 09:08:16 +08:00
    Resource
        1
    Resource  
       2018-11-16 17:06:14 +08:00
    累不累
    sherylynn
        2
    sherylynn  
       2018-11-16 17:09:20 +08:00   ❤️ 1
    我觉得如果是面向中文产出的小项目,用中文编程还行,直接一对一,比如输出 excel
    xuanwu
        3
    xuanwu  
    OP
       2018-11-17 02:02:18 +08:00
    @sherylynn 嗯, 这些小项目应该是通过中文命名投入产出比最高的. 代码可读性提高又使自己的维护和改进省力很多. 专栏里之前写过一些 python 小工具 /浏览器插件, 都是中文命名.
    kaka2019
        4
    kaka2019  
       2018-11-17 09:08:16 +08:00 via iPhone
    累不累
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5435 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 08:44 · PVG 16:44 · LAX 01:44 · JFK 04:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.