语法的省略不能造成编译器的歧义

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

package
exp {

    object Main {

        def
main(args: Array[String]): Unit = {

             B[String].say("hello"); //B[String]后的括号可以省略,编译器知道这不是要用类型B而是要调用B.apply[String]

             A().say("hello"); //括号省略了不知道是要用object的类型A还是A.apply()

        }

    }

    class
A

    {

        def
say(x:String) = println(x);

    }

    object A

    {

        def
apply():A = new
A;

    }

    class
B[T]

    {

        def
say(x:T) = println(x);

    }

    object B

    {

        def
apply[T]():B[T] = new
B[T];

    }

}

  

语法的省略不能造成编译器的歧义,码迷,mamicode.com

时间: 2025-01-02 16:43:45

语法的省略不能造成编译器的歧义的相关文章

2. Go 语言基本语法

Go语言基本语法 变量.数据类型和常量是编程中最常见,也是很好理解的概念.本章将从 Go 语言的变量开始,逐步介绍各种数据类型及常量. Go 语言在很多特性上和C语言非常相近.如果读者有C语言基础,那么本章的内容阅读起来将会非常轻松:如果读者没有C语言基础也没关系,因为本章内容非常简单易懂. Go语言变量的声明(使用var关键字) Go语言是静态类型语言,因此变量(variable)是有明确类型的,编译器也会检查变量类型的正确性.在数学概念中,变量表示没有固定值且可改变的数.但从计算机系统实现角

关于get、set方法以及点语法的使用

首先写一个简单的get,set方法来熟悉它的作用 //Fraction.h @interface Fraction:NSObject -(void)setNumber:(int) n; -(int)getNumber; //Fraction.m #import Fraction.h @implementation Fraction { int number; } -(void)setNumber:(int)n;{ number = n; } -(int)getNumber{ return num

淘宝数据库OceanBase SQL编译器部分 源代码阅读--解析SQL语法树

OceanBase是阿里巴巴集团自主研发的可扩展的关系型数据库,实现了跨行跨表的事务,支持数千亿条记录.数百TB数据上的SQL操作. 在阿里巴巴集团下,OceanBase数据库支持了多个重要业务的数据存储.包含收藏夹.直通车报表.天猫评价等. 截止到2013年4月份.OceanBase线上业务的数据量已经超过一千亿条. 看起来挺厉害的,今天我们来研究下它的源码. 关于OceanBase的架构描写叙述有非常多文档.这篇笔记也不打算涉及这些东西,仅仅讨论OceanBase的SQL编译部分的代码. O

淘宝数据库OceanBase SQL编译器部分 源码阅读--解析SQL语法树

OceanBase是 阿里巴巴集团自主研发的可扩展的关系型数据库,实现了跨行跨表的事务,支持数千亿条记录.数百TB数据上的SQL操作.在阿里巴巴集团 下,OceanBase数据库支持了多个重要业务的数据存储,包括收藏夹.直通车报表.天猫评价等.截止到2013年4月份,OceanBase线上业务 的数据量已经超过一千亿条. 看起来挺厉害的,今天我们来研究下它的源代码.关于OceanBase的架构描述有很多文档,这篇笔记也不打算涉及这些东西,只讨论OceanBase的SQL编译部分的代码. Ocea

go语言--基础语法与使用

从“Hello World”开始 代码 1 package main 2 3 import ( 4 "fmt" 5 ) 6 7 func main() { 8 /* 9 这是学习Goglang语言的最开始的地方 10 */ 11 fmt.Println("Hello World!") 12 //输出Hello World! 13 } 解释 第一行: package是最基本的分发单位和工程管理中依赖关系的体现 每个Go语言源代码文件开头都必须要有一个package声明

深入理解java虚拟机(十二) Java 语法糖背后的真相

语法糖(Syntactic Sugar),也叫糖衣语法,是英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语.指的是,在计算机语言中添加某种语法,这些语法糖虽然不会对语言的功能产生任何影响,却能使程序员更方便的使用语言开发程序,同时增强程序代码的可读性,避免出错的机会.但是如果只是大量添加和使用语法糖,却不去了解他,容易产生过度依赖,从而无法看清语法糖的糖衣背后,程序代码的真实面目. 总而言之,语法糖可以看做是编译器实现的一些"小把戏",这些"小

Unity3D热更新全书-脚本(三) C#LightEvil语法与调试

调试,这是一个无法规避的问题 C#Light 由于有 词法解释.语法解释.运行时三种情况 所以和C#也是有类似的问题 出错大致可以分为编译错误和运行时错误 拼写出莫名的东西或者语法不正确,会在编译阶段报错,这种错误很好检查,因为 C#Light语法是C#的严格子集,所有的C#Light脚本都可以用C#的标准做语法检查 这也是C#Light基本上是用VisualStudio做编辑器的原因所在,直接作为C#代码编译,可以排除大部分的语法问题. 然后剩下的一些作为C#代码可以编译过,但是C#Light

合并_01php基础语法(8days)笔记

一.入门指引 1.php是什么? PHP是什么? Hypertext Preprocessor,超文本预处理器 Personal Home Page,个人主页 是一种在服务器端执行的脚本语言,可嵌入到 HTML中,尤其适合 web 开发. ? php可以做什么? 网站,web程序 B/S架构 ? ? 命令行脚本 桌面应用程序 ? ? 二.安装Apache 制作一台服务器,来提高网页服务,只要安装了一个能提供网页服务的软件的电脑,就可以称之为网页服务器. 常见的网页服务器软件 Apache IIS

构造可配置词法语法分析器生成器(中)

本文为笔者原创,转载请注明出处 http://blog.csdn.net/xinghongduo   语法分析器 语法分析器(grammar parser)是编译器的核心部分之一,它的作用是检测词法分析器返回的token序列是否符合文法定义的规则.一个完整的语法分析器除了检测语法正确性外还要包含对出错的处理以及错误恢复等功能. 文法和文法类型 文法是定义一个语言的所有规则的集合,形式上定义为四元组G={VT,VN,S,P},其中: VT是非空有限符号集合,它的每个符号称为终结符,文法产生的语言由