对Scala Singleton对象感到困惑

时间:2016-11-25 23:26:57

标签: scala

我是一名java程序员并学习Scalanow。在Java中,单个对象意味着整个JVM中只能存在此类型对象中的一个。但是在Scala中我怎么能在相同的类型下创建两个单例对象,例如我可以在相同的类类型Seq中创建两个单例对象:

val s1 = Seq("aa","bb")
val s2 = Seq("aa","bb","cc")

2 个答案:

答案 0 :(得分:2)

这有点不同。 阅读文档:http://docs.scala-lang.org/tutorials/tour/singleton-objects.html

在您的示例中,您将创建Seq类型的值。它不是单身人士! 以下是单身人士的例子:

#include "stdafx.h"
#include <iostream>
#include <string>
#include <fstream>
#include <iomanip>

using namespace std;

struct Honda {
    int id;
    int year;
    string model;
    string trim;
    string color;
    int engine;

};

const int SIZE = 10;

void openInputFile(ifstream &, string);

int main()
{
    Honda arr[SIZE];

    ifstream inFile;
    string inFileName = "C:\\Users\\Michael\\Documents\\inventory.txt";

    openInputFile(inFile, inFileName);

    for (int count = 0; count < SIZE; count++) {
        inFile >> arr[count].id >> arr[count].year >> arr[count].trim >> arr[count].color >> arr[count].engine;
    }

    inFile.close();
    return 0;
}

void openInputFile(ifstream &inFile, string inFileName)
{
    //Open the file
    inFile.open(inFileName);

    //Input validation
    if (!inFile)
    {
        cout << "Error to open file." << endl;
        cout << endl;
        return;
    }
}

这是一个重复的问题。

答案 1 :(得分:0)

在阅读@Pavel指出的文档时,值得指出:

val s1 = Seq("aa","bb")

没有创建任何单身人士。而是在apply的抽象超类上调用Seq方法,返回instance