Scala之旅(TOUR OF SCALA)——内部类(INNER CLASSES)

如何安装本地Go Tour教程(或者叫A Tour of Go离线版),以及中文版安装不了该怎么办 Go 官方是有一个在线教程,可以在线学习 Go 的编程,并且有中文版。英文原版页面如下:出人意料的是,Go 提供了离线版(各个语言都有),下载安装之后就可以在本地编译运行查看结果,不用联网使用远程服务器,这样提高了效率和性能(关于这方面的详细内容后面会单独有一节对比的)。 阅读详情

在 Scala 中,让类中有其它类作为成员是可能的。与类 Java 的语言内部类作为封闭类的成员相反,,在 Scala 中内部类是被绑定到外部对象上的。假设编译器在编译时想阻止我混合哪些结点属于哪些类。路径依赖类型提供了一个解决方案。

为了演示不同, 我们迅速实现一个图的数据类型:

class Graph {
    class Node {
        var connectedNodes: List[Node] = Nil
        def connectTo(node: Node) {
            if (connectedNodes.find(node.equals).isEmpty) {
                connectedNodes = node :: connectedNodes
            }
        }
    }

    var nodes: List[Node] = Nil
    def newNode: Node = {
        val res = new Node
        nodes = res :: nodes
        res
    }
}

这个程序代表了一个拥有列表结点(List[Node])的图。每个结点

val graph1: Graph = new Graph
val node1: graph1.Node = graph1.newNode
val node2: graph1.Node = graph1.newNode
val node3: graph1.Node = graph1.newNode
node1.connectTo(node2)
node2.connectTo(node3)

我们明确地声明了 node1 , node2 , node3 的类型为 graph1.Node ,但是实际上编译器可以推断出它。这是因为当我们调用 graph1.newNode 时调用了 new Node ,这个方法使用了特定实例 garph1 的 Node 的实例。

如果我们有两个图的实例,Scala 的类型系统不会允许我们把一个实例图中的定义的结点混合到另一个实例图中定义的结点中。因为另一个实例图中的结点类型是另一种类型。这里有一个错误的程序例子:

val graph1: Graph = new Graph
val node1: graph1.Node = graph1.newNode
val node2: graph1.Node = graph1.newNode
node1.connectTo(node2)      // 合法
val graph2: Graph = new Graph
val node3: graph2.Node = graph2.newNode
node1.connectTo(node3)      // 非法

graph1.Node 与 grpah2.Node 类型是不同的。在 Java 中上面的例子中的最后一行是对的。图中结点的类型都是相同的 Graph.Node 类型。在 Scala 中像这样的类型被表示为 Graph#Node 。如果我们想让不同的图中的结点一起使用,可以改变在图中的定义像下面的例子进行实现:

class Graph {
    class Node {
        var connectedNodes: List[Graph#Node] = Nil
        def connectTo(node: Graph#Node) {
            if (connectedNodes.find(node.equals).isEmpty) {
                connectedNodes = node :: connectedNodes
            }
        }
    }

    var nodes: List[Node] = Nil
    def newNode: Node = {
        val res = new Node
        nodes = res :: nodes
        res
    }
}

注意:内部类不允许我们将两个图中的结点一起使用,如果我们想解除这个限制,我们需要改变结点变量的类型为 Grpah#Node 。

【Solidworks学习使用(1)__2022版本保姆级安装方法】 Solidworks 2020安装 阅读详情

相关推荐

解决Docker拉取镜像报错:Get https://registry-1.docker.io/v2/: 报错

解决Docker拉取镜像报错: Get “https://registry-1.docker.io/v2/”: net/http: request canceled while waiting for connection问题描述Get "https://registry-1.docker.io/v2/"是docker官方的镜像源,下载很慢的,一般会自己指定国内映射的加速镜像源。

qq_33650333的博客 4173

com.alibaba.fastjson.JSONException: can‘t create non-static inner class instance.异常处理

在使用JSON.parseArray(jsonStr, RmqSubGroup.class)做转换时,出现JSONException: can't create non-static inner class instance异常。

进击的小白 986

GraphRAG 踩坑记录

GraphRAG踩坑记录

yufanwenshu的博客 4351

已解决 can‘t create non-static inner class instance.

已解决 can't create non-static inner class instance. 不能创建非静态内部类实例。 加staticok @ToString @Data public static class Accout { private int account_number; private int balance; private String firstname; private String lastname; private int age;

weixin_48776118的博客 8368

ARM架构实战:在鲲鹏920服务器上用Debian12部署PVE虚拟化平台

本文详细介绍了在基于ARM架构的华为鲲鹏920服务器上,以Debian 12为底层系统,部署Proxmox VE(PVE)虚拟化平台的完整实战流程。文章重点解析了ARM64架构下PVE软件源的配置、内核安装的注意事项、部署后网络与存储的调优,并提供了针对ARM虚拟化环境的性能优化建议,为在国产化硬件上构建稳定高效的虚拟化环境提供了宝贵经验。

efc12345678的博客 780

【YOLOv11改进- 主干网络】YOLOv11+WTConv(ECCV2024): 基于YOLOv11的主干网络改进,大感受野的小波卷积

论文提出了WTConv,这是一个使用级联小波分解的层,并执行一组小卷积核的卷积,每个卷积专注于输入的不同频率带,并具有越来越大的感受野。这个过程能够在输入中对低频信息给予更多重视,同时仅增加少量可训练参数。实际上,对于一个  的感受野,可训练参数数量只随着  的增长而呈对数增长。而WTConv与常规方法的参数平方增长形成对比,能够获得有效的卷积神经网络(CNN),其有效感受野(ERF)大小前所未有。

qq_41304809的博客 1401

com.alibaba.fastjson.JSONException: can‘t create non-static inner class instance

【代码】com.alibaba.fastjson.JSONException: can‘t create non-static inner class instance。

hshpy的博客 1921

【YOLOv8改进-损失函数】 YOLOv8自带损失函数CIoU / DIoU / GIoU 详解,以及如何切换损失函数

在介绍YOLOv8中的各种Iou之前,我们先来了解了解目标检测中的损失函数。目标检测模型通常包含两类损失函数:类别损失(分类)和位置损失(回归)。这两类损失函数用于检测模型的最后一部分,根据模型的输出(类别和位置)以及实际标注框(类别和位置),分别计算类别损失和位置损失。

专注于图像领域,主要研究内容包括计算机视觉和深度学习,特别是在图像分类、目标检测和图像生成等方面有深入的研究和实践经验。 5190

[数据格式转换报错 can‘t create non-static inner class instance. 原因 ]

水水水

汤圆的博客 2632

PyCharm 接入 OpenAI Codex CLI 的 4 步配置与调试实录

揭示 Codex CLI 在 PyCharm 中上下文失稳的四大根源:CLI 启动模式与 IDE 进程模型冲突、stdin/stdout 流式处理不兼容、环境变量污染、AST 注释缺失,并给出基于 Shell 脚本桥接与结构化上下文注入的稳定接入方案。

weixin_42627902的博客 374

基于YOLOv11的气象目标检测系统:台风眼与钩状回波检测

气象目标检测是计算机视觉在气象领域的重要应用,对台风预警和强对流天气监测具有重要意义。本文详细介绍了一种基于YOLOv11的气象目标检测系统,能够有效识别卫星云图中的台风眼和雷达图中的钩状回波。系统包含完整的数据处理流程、模型训练策略以及用户友好的Web界面。我们使用了公开的气象数据集进行训练和验证,并提供了完整的实现代码。实验结果表明,本系统在气象目标检测任务中达到了较高的准确率和实用性。关键词:气象目标检测;YOLOv11;台风眼检测;钩状回波;深度学习;计算机视觉台风眼检测数据集。

YOLO 474

fastJson解析报错:com.alibaba.fastjson.JSONException: can't create non-static inner class instance....

原因:   如果出现类嵌套类的情况,需要将被嵌套的那个类设置为static。 比如: public class AA { // 相关属性 public class BB {//会报错 // 相关属性 } } 应该改为: public class AA { ...

weixin_30732825的博客 2591

数据库常见面试题(附答案)

1.事务四大特性 原子性,要么执行,要么不执行 隔离性,所有操作全部执行完以前,其它会话不能看到过程 一致性,事务前后,数据总额一致 持久性,一旦事务提交,对数据的改变就是永久的 2.数据库隔离级别,每个级别会引发什么问题,mysql默认是哪个级别 脏读:事务B读取事务A还没有提交的数据 不可重复读:两次事务读的数据不一致 幻读:事务A修改了数据,事务B也修改了数据,这时在事务A看...

csdn问鼎 46万+

Scala之旅(TOUR OF SCALA)——目录(CONTENTS)

Scala之旅(TOUR OF SCALA)——基础(BASICS) Scala之旅(TOUR OF SCALA)——统一类型(UNIFIED TYPES) Scala之旅(TOUR OF SCALA)——类(CLASSES) Scala之旅(TOUR OF SCALA)——特征(TRAITS) Scala之旅(TOUR OF SCALA)——通过混合组成类(CLASS COMPOSITION ...

Czuaphe的博客 773

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

scala(10)A Tour of Scala: Inner Classes

scala(10)A Tour of Scala: Inner Classes Inner Classes Just understand we can have inner classes class Graph { class Node { var connectedNodes: List[Node] = Nil def connectTo(node: Node...

快马扬鞭须努力! 163

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

JSONException json转换异常

Exception in thread "main" com.alibaba.fastjson.JSONException: can't create non-static inner class instance. 线程“main”com. alibaba.com .fastjson中的异常。JSONException:不能创建非静态内部类实例。 原因: json字符串转json对象时被转成...

cdliker的博客 1901

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

com.alibaba.fastjson.JSONException: can‘t create non-static inner class instance.

无法创建非静态内部类实例

向全栈冲锋 3045

go tour - Go 入门实验教程

在线实验地址 - 官网 在线实验地址 - 国内 可以将官方教程作为独立程序在本地安装使用,这样无需访问互联网就能运行,且速度更快,因为是在你的机器上构建并运行代码示例。 本地运行此教程的中文版的步骤如下: 下载并安装 Go 用 go get 命令来安装 gotour: go get github.com/Go-zh/tour/gotou...

weixin_30682127的博客 454

在线 Go 语言教程 —— Go 语言之旅(gotour)

Go 语言之旅,支持在线敲代码练习的官方入门教程

程序员溪昂 1279

探索Go语言之旅:Go Tour

探索Go语言之旅:Go Tour 项目地址:https://gitcode.com/gh_mirrors/to/tour 1、项目介绍 Go Tour 是一个精心设计的在线学习平台,旨在帮助开发者轻松入门Go语言。虽然它的主要网页已迁移到 golang.org/x/website,但这个开源项目仍然保留了支持教学的包,如 [golang.org/x/tour/pic](https://golang...

gitblog_00074的博客 540

UI动效性能优化:基于awesome-animation项目的最佳实践

awesome-animation是一个由Animatious一起动画开源组维护的UI动效库集合,收录了众多高质量的开源动效实现,涵盖iOS、Android和Web等多个平台。本文将结合该项目中的实践案例,分享UI动效性能优化的核心方法与最佳实践,帮助开发者打造流畅高效的动效体验。 ## 为什么动效性能优化至关重要? 在移动应用和网页开发中,流畅的UI动效能够显著提升用户体验,但不当的实现方式

gitblog_00495的博客 619

探索技术之美:`gotour`——Go语言之旅

探索技术之美:gotour——Go语言之旅 去发现同类优质开源项目:https://gitcode.com/ 项目简介 是一个基于Web的互动教程,旨在帮助开发者快速上手和深入理解Go(Golang)编程语言。该项目由flysnow-org 维护,为学习者提供了一个方便、直观且实用的学习平台,无论你是编程新手还是寻求切换到Go语言的老兵,都可以在这里找到你需要的知识。 技术分析 1. Go语言编写...

gitblog_00075的博客 470

Go Tour完全指南:掌握Go语言的互动学习平台

Go Tour是Go语言官方提供的互动式学习平台,为初学者和进阶开发者提供了一个无需本地环境配置的编程练习场所。通过浏览器即可编写、运行和调试Go代码,这种即时反馈的学习方式大大提升了编程效率。 ## 项目核心价值解析 **免安装编程体验** Go Tour最大的优势在于完全免除了复杂的本地环境配置。你不需要安装Go编译器、配置开发环境,直接在浏览器中就能开始编程之旅。这对于编程新手来说,消除

gitblog_00839的博客 553

com.alibaba.fastjson.JSONException: can't create non-static inner class instance.

can’t create non-static inner class instance. 翻译: 无法创建非静态内部类实体 异常代码: public class A{ private List<B> listb; .... class B{ } } 正常代码 public class A{ private List<B> listb; .... st...

sally7²⁰²¹ 5710

【Go tour 官方】习题

Go 语言最佳入门实践的例题

ChanceZhou的博客 584

Go Tour终极指南:从零开始的Go语言互动学习体验

Go Tour项目是每一位Go语言学习者的必备工具,它通过精心设计的互动练习,让你在实践中快速掌握Go语言的核心概念。这个项目不仅仅是教程,更是一个完整的编程训练场。 ## 学习价值:为什么选择Go Tour? Go Tour项目最大的魅力在于它的**沉浸式学习体验**。想象一下,你不需要在本地配置复杂的开发环境,直接在浏览器中就能编写和运行Go代码。这种即时的反馈机制让学习变得高效而有趣。

gitblog_01030的博客 402
上一篇: Scala之旅(TOUR OF SCALA)——类型下限(LOWER TYPE BOUNDS)
下一篇: # Scala之旅(TOUR OF SCALA)——抽象类型(ABSTRACT TYPES)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值