Помогите, в середине перевода скрипта Python на Scala

1

Я пытаюсь перевести: http://thinkstats.com/survey.py этот скрипт.

Итак, вот что я сейчас переводил (Python):

"""This file contains code for use with "Think Stats",
by Allen B. Downey, available from greenteapress.com

Copyright 2010 Allen B. Downey
License: GNU GPLv3 http://www.gnu.org/licenses/gpl.html
"""

import sys
import gzip
import os

class Record(object):
    """Represents a record."""

class Respondent(Record): 
    """Represents a respondent."""

class Pregnancy(Record):
    """Represents a pregnancy."""

Scala:

import sys.process._
import java.util.zip.GZIPInputStream
import java.io._

class Record[T](val obj: T)

class Respondent[T](val record: Record[T])

class Pregnancy[T](val record: Record[T])

Вопрос: Правильно ли я делал class Respondent и class Pregnancy? Правильно ли указан тип аннотации для этого класса? Правильно ли логика? Я только что прочитал о параметризации типа, поэтому я немного уверен в этом и хотел бы узнать, правильно ли я нахожусь на правильном пути.

Спасибо за ваше время.

  • 0
    Это может быть правильно - я не уверен. Для чего используется параметр типа T ?
  • 0
    @Owen Сейчас я не знаю. Я просто знаю, что он принимает параметр типа Object. Это может быть поток, поэтому я просто аннотирую его как тип T. И когда я объявляю классы Respondent и Pregnancy, я получаю сообщение об ошибке, потому что Record принимает параметр, поэтому я в конечном итоге аннотировал тип записи в параметре Респондент и Беременность. > ____ <
Показать ещё 2 комментария
Теги:

1 ответ

5
Лучший ответ

Насколько я помню, синтаксис Python, который вы показываете, предназначен для расширения класса (наследование). Эквивалентная Scala была бы

/** Represents a record.
 */
class Record

/** Represents a respondent.
 */
class Respondent extends Record

/** Represents a pregnancy.
 */
class Pregnancy extends Record

Комментарии Scala формы /**... */ будут отображаться в документации ScalaDoc.

Здесь не нужна параметризация параметров. Его основное использование - позволить классам принимать или возвращать значения произвольного параметризованного типа. Например, List[Int] и List[String] представляют собой списки целых чисел и строк соответственно.

  • 0
    Спасибо. Сделал быстрый Google, чтобы подтвердить это, очень удивило / шокировало, как Python наследует.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню