内容简介:翻译自:https://stackoverflow.com/questions/6564220/backquote-used-in-scala-swing-event
的新手,并按照其中一个例子让Swing在Scala中工作,我有一个问题.基于,
listenTo(celsius, fahrenheit) reactions += { case EditDone(`fahrenheit`) => val f = Integer.parseInt(fahrenheit.text) celsius.text = ((f - 32) * 5 / 9).toString case EditDone(`celsius`) => val c = Integer.parseInt(celsius.text) fahrenheit.text = ((c * 9) / 5 + 32).toString }
为什么我必须在EditDone(`fahrenheit`)和EditDone(`celsius`)中使用反引号(`)来识别我的文本域组件,例如华氏温度和摄氏温度?为什么我不能只使用EditDone(fahrenheit)呢?
谢谢
这与模式匹配有关.如果在模式匹配中使用小写名称:
reactions += { case EditDone(fahrenheit) => // ... }
然后匹配的对象(在这种情况下为事件)将与任何小部件上的任何EditDone事件匹配.它会将对窗口小部件的引用绑定到名称fahrenheit.华氏温度成为该案例范围内的新价值.
但是,如果你使用反引号:
val fahrenheit = new TextField ... reactions += { case EditDone(`fahrenheit`) => // ... }
然后,只有当EditDone事件引用之前定义的值fahrenheit引用的现有对象时,模式匹配才会成功.
请注意,如果值华氏度的名称是大写的,就像华氏度,那么你就不必使用反引号 – 就好像你已经把它们放了一样.如果要在范围中包含要匹配的常量或对象,这将非常有用 – 这些常量或对象通常具有大写名称.
翻译自:https://stackoverflow.com/questions/6564220/backquote-used-in-scala-swing-event
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Go中单引号和双引号和反引号(飘号)
- JS声明对象时属性名加引号与不加引号的问题及解决方法
- 如何设置 Visual Studio Code 格式化 React 时不要将单引号转为双引号?
- Linux 中引号的那些事
- MySQL中一个双引号错位引发的血案
- Javascript:在HTML中转义双引号
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Rust编程之道
张汉东 / 电子工业出版社 / 2019-1 / 128
Rust 是一门利用现代化的类型系统,有机地融合了内存管理、所有权语义和混合编程范式的编程语言。它不仅能科学地保证程序的正确性,还能保证内存安全和线程安全。同时,还有能与C/C++语言媲美的性能,以及能和动态语言媲美的开发效率。 《Rust编程之道》并非对语法内容进行简单罗列讲解,而是从四个维度深入全面且通透地介绍了Rust 语言。从设计哲学出发,探索Rust 语言的内在一致性;从源码分析入......一起来看看 《Rust编程之道》 这本书的介绍吧!