Swift 5.0中有这项工作:
该类如下所示。在此类的主体中,创建一个函数,该函数将为特定对象打印此类的参数。创建学生类的此类对象,将其称为此函数并在屏幕上显示结果:
工作班
class Student {
var name: String
var surname: String
var yearOfBorn: Int
var mark: Double
init(name: String, surname: String, yearOfBorn: Int, mark: Double) {
self.name = name
self.surname = surname
self.yearOfBorn = yearOfBorn
self.mark = mark
}
}
我该怎么做? 我正在尝试:
func printStudent() {
if name == name {
print(name)
} else if surname == surname {
print(surname)
} else if yearOfBorn == yearOfBorn {
print(yearOfBorn)
} else if mark == mark {
print(mark)
}
}
答案 0 :(得分:-1)
尝试此代码:
class TestFrame(Frame):
def __init__(self, frMaster):
...
self.testClass = TestClass()
self.subFrame = SubFrame(self.frMaster, self.testClass)
...
class SubFrame(Frame):
def __init__(self, frMaster, testclass):
...
self.cbTest = ttk.Combobox(..., values=testclass.test_array, ...)
答案 1 :(得分:-1)
如果要打印对象的所有属性,则不需要if语句;实际上,如果您将name == name
作为参数传递,则始终会输入第一个if语句,从而跳过其他语句。
您只需要创建一个类似这样的函数即可在其中打印每个属性:
func printStudent() {
print(self.name)
print(self.surname)
print(self.yearOfBorn)
...
}
答案 2 :(得分:-1)
您只需要打印变量:
func printStudent() {
print("Name: \(self.name), Surname: \(self.surname), Year Of Born: \(self.yearOfBorn)")
}
答案 3 :(得分:-1)
我不确定这些if
语句的目的是什么。也许您在想:
if let foo = foo { ... }
但是仅当foo
是可选的时才使用该技术。但是您的属性不是可选的,因此if let
语法是不必要的。
不用说,您可以这样做:
func printStudent() {
print(name)
print(surname)
print(yearOfBorn)
print(mark)
}
FWIW,如果您的意图只是出于自己的目的print
,那么您可能希望使class
符合CustomStringConvertible
:
extension Student: CustomStringConvertible {
var description: String { return "<Student name=\(name); surname=\(surname); yearOfBorn=\(yearOfBorn); mark=\(mark)>" }
}
那么您根本不需要编写自己的printStudent
方法,但是可以直接使用print
:
let student = Student(name: "Rob", surname: "Ryan", yearOfBorn: 2000, mark: 4)
print(student)
这将产生:
<学生姓名= Rob;姓=瑞安; yearOfBorn = 2000; mark = 4.0>
或者,如果您可以使用struct
值类型,则完全不需要init
方法或CustomStringConvertible
协议。然后,您可以简单地将Student
定义为:
struct Student {
var name: String
var surname: String
var yearOfBorn: Int
var mark: Double
}
然后
let student = Student(name: "Rob", surname: "Ryan", yearOfBorn: 2000, mark: 4)
print(student)
会产生:
学生(姓名:“ Rob”,姓氏:“ Ryan”,yearOfBorn:2000,分数:4.0)