Я пытаюсь перевести: 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
? Правильно ли указан тип аннотации для этого класса? Правильно ли логика? Я только что прочитал о параметризации типа, поэтому я немного уверен в этом и хотел бы узнать, правильно ли я нахожусь на правильном пути.
Спасибо за ваше время.
Насколько я помню, синтаксис 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]
представляют собой списки целых чисел и строк соответственно.
T
?