В вашем первом примере говорится, что вы определили getPerson (name: String) как метод экземпляра. (Предположительно, потому что он работает со свойствами экземпляра.)
Вы называете это здесь, как если бы оно было определено как:
static func getPerson(name: String) { ...
Второй говорит примерно то же самое, не догадываясь, что вы хочу сделать.
Если я понимаю, что вы хотите сделать, я думаю, что это выглядит примерно так:
class GetPersons {
struct Person {
public var name : String = ""
public var age : Int = 0
}
func getPerson(name : String) -> Person {
var person = Person()
return person
}
}
Затем в вашем контроллере представления определите свойство для экземпляра GetPersons:
let gp = GetPersons()
затем в viewDidLoad:
let person = gp.getPerson(name: "Jack")
Кроме того, находится ли GetPersons в реальной структуре или это просто класс, определенный (как и должно быть) в отдельном файле?
Многие классы в Java принимают подмножество массивов в качестве параметра. Например. Writer.write (char cbuf [], int off, int len). Возможно, этого уже достаточно для вашего варианта использования.
Библиотеки Guava Google поддерживают понятие части в форме ByteSource.
Google Guava является легко доступным пакетом с открытым исходным кодом функциональности, записанной с нуля для применения лучших методов Google, которые зависят от значительных возможностей разрезания массива.
Arrays.asList(array).subList(x, y).
Этот метод дает вам не массив, а Список
, который гораздо более гибкий.
Вы можете использовать тот же подход, что и класс String
; создать класс для неизменяемых объектов, которые построены из массива, начального смещения и конечного смещения, который предлагает доступ к подмассиву. Пользователь такого объекта не должен знать различия между целым массивом или подмассивом. Конструктору не нужно копировать массив, просто сохраните ссылку на массив и его границы.