简单的scala宏

2024-01-04

我想要一个 scala 宏来执行以下操作: 当我写的时候:

myCreateCityMacro("paris")
myCreateCityMacro("vallorbe")

我想得到:

val paris = new City("paris")
val vallorbe = new City("vallorbe")

这可以使用 scala Dynamic 功能来解决:

import scala.language.dynamics

object Cities extends App {
    var c = new DynamicMap[String, City]()
    createCity("Paris")
    createCity("Vallorbe")
    println(c.Paris, c.Vallorbe)

    def createCity(name: String) {
        c.self.update(name, new City(name))
    }
}

class City(name: String) {
    override def toString = s"-[$name]-"
}

class DynamicMap[K, V] extends Dynamic {
    val self = scala.collection.mutable.Map[K, V]()
    def selectDynamic(key: K) = self(key)
}

执行时:

(-[Paris]-,-[Vallorbe]-)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

简单的scala宏 的相关文章

随机推荐

  • 如何向框架添加鼠标监听器

    我想向 mt JFrame 框架添加一个 mouselistener 但是当我执行 frame addMouseListener this 时 我收到一个错误 指出我无法在静态方法中使用它 我正在制作一个应用程序 检测鼠标的单击 然后以 i
  • 如何使用 scikit 的预处理/标准化以及交叉验证?

    作为没有任何预处理的交叉验证的示例 我可以这样做 tuned params penalty l2 l1 from sklearn linear model import SGDClassifier SGD SGDClassifier fro
  • 如果选中则获取复选框值

    我正在使用 HTML 和 JQuery mobile 构建一个表单 以便该表单可以在移动设备上使用 我有通过电子邮件导出到 CSV 的表单 但是 如果未选中复选框 则不会写入 CSV 文件 我可以使用 jQuery 中的函数使用标签中的值从
  • MySQL GROUP_CONCAT 多个字段

    我可能正处于无脑时刻 我想使用 GROUP CONCAT 从数据库中的两个字段返回一系列数字 到目前为止我已经使用以下方法完成了此操作 SELECT t id CONCAT GROUP CONCAT DISTINCT s id IFNULL
  • 如何在 C# 中序列化和反序列化以字节数组作为成员的类

    我正在尝试以字节流的形式在两个进程之间发送数据 这对于几乎所有类都工作得很好 但我遇到的一个问题是 如果对象的类内部有一个字节数组并给出 则反序列化会失败我收到一个错误 指出无法加载发生序列化的程序集 我无法将程序集包含在此处 因为发送方和
  • matplotlib:3D 图中的网格

    In matplotlib 如何在 3D 散点图中显示网格 在二维图中我只是这样做 plt grid True 它就像一个魅力 现在 对于 3D 绘图 相同的调用会返回警告 File usr lib pymodules python2 7
  • Haystack - 为什么 RealtimeSearchIndex 有时不更新我保存的对象

    我正在将 Haystack 和 Whoosh 与 Django 一起使用 在 search index py 中我有这个 class PageIndex RealTimeSearchIndex text CharField document
  • 在 Collectionview 中如何根据选择设置颜色?

    我的要求是首先设置默认颜色indexPath我想根据选择改变颜色 我的要求是当集合视图在第一个索引加载时背景颜色应该是红色 未选择的颜色是蓝色 如何管理这个 这是我的代码 import UIKit class MyCollectionVie
  • pandas,将多列的多个函数应用于groupby对象

    我想将多列的多个函数应用于 groupby 对象 这会产生一个新的pandas DataFrame 我知道如何分步骤完成 by user lasts groupby user elapsed days by user apply lambd
  • 如何禁用 mmap() 的写入时复制和按需填充零

    我正在使用 mmap 实现 cp 文件复制 命令 为此 我在 MAP PRIVATE 因为我只想读取 模式下映射源文件 在 MAP SHARED 模式下映射目标文件 因为我必须写回目标文件的更改内容 在执行此操作时 我观察到由于两个原因而发
  • 让 HABTM 关系在 CakePHP 中独一无二

    我有两个模型 称为 Book 和 Tag 它们处于 HABTM 关系中 我希望一对 书籍 标签 仅保存一次 在我的模型中我有 var hasAndBelongsToMany array Tag gt array className gt T
  • 如何在 XPage 中隐藏带有
  • 标记的菜单项
  • 我有一个基于这个惯例的传统菜单 ul li li ul
  • JXMultiSplitPane 在滑块调整期间导致重绘?

    在调整分离器期间 我似乎收到频繁的重涂请求JXMultiSplitPane http download java net javadesktop swinglabs releases weekly week 42 2006 10 15 sw
  • JPA继承@EntityGraph包括子类的可选关联

    给定以下域模型 我想加载所有Answer包括他们的Values 及其各自的子孩子并将其放入AnswerDTO然后转换为 JSON 我有一个可行的解决方案 但它遇到了 N 1 问题 我想通过使用临时解决方案来摆脱它 EntityGraph 所
  • 无论旋转如何,跟踪增强面 (ARCore) 的面网格顶点

    我正在尝试跟踪面部表情 例如扬眉 微笑 眨眼等 在 ARKit 中 我可以使用 blendShapes https developer apple com documentation arkit arfaceanchor 2928251 b
  • 计算数据集之间相似度百分比的有效方法

    我目前正在使用用户对象 每个对象都有许多目标对象 Goal 对象不是特定于用户的 即用户可以共享相同的 Goal 我正在尝试设计一种方法来计算两个用户之间的 相似度百分比 即 考虑到他们共享的目标数量以及他们不共享的目标数量 是否有人有此类
  • Microsoft.AspNetCore.NodeServices:无法启动节点进程

    我在用着Microsoft AspNetCore NodeServices 1 1 1在我的 ASP Net Core 应用程序中 一切都工作正常 但现在我在一台新计算机上 出现以下错误 System InvalidOperationExc
  • Primefaces 5 覆盖面板更新后损坏

    今天我在P5中发现了一个新的bug 当我更新覆盖面板所指的按钮时 它不再起作用 覆盖面板不再显示 作为一种解决方法 我确实使用PF widgetVar loadContents 但这感觉很不舒服 在 PF4 中 这确实有效 没有任何解决方法
  • Flutter 应用程序在发布应用程序模式下显示白屏?

    我在颤振应用程序中面临非常奇怪的问题 当在调试模式下测试我的应用程序时 它工作正常 而在发布模式下则显示白屏 该应用程序已在 Playstore 中发布 几天后我改变了这个应用程序 我想发布第二个版本 当我尝试构建发布 apk 时 它在调试
  • 简单的scala宏

    我想要一个 scala 宏来执行以下操作 当我写的时候 myCreateCityMacro paris myCreateCityMacro vallorbe 我想得到 val paris new City paris val vallorb