Telegram Group & Telegram Channel
S7 0.2.0: Новый стандарт ООП в R

S7 — это гибкий и мощный инструмент для объектно-ориентированного программирования в R, предлагающий строгость S4 и простоту S3. Новая версия 0.2.0 усиливает производительность, вводит улучшенную совместимость с S3 и добавляет гибкие валидаторы. Проектирование и реализация S7 были совместными усилиями рабочей группы из R Consortium , включая представителей R-Core, Bioconductor, tidyverse/Posit, ROpenSci и более широкого сообщества R. В будущем разработчики планируют интеграцию S7 в базовый R.

Установите пакет, чтобы попробовать новый подход к ООП:
install.packages("S7")


Основные возможности S7

1. Создание классов
S7 позволяет определять классы с четкими типами свойств. Для обеспечения корректности данных можно использовать валидаторы.

Пример:
Range <- new_class("Range",
properties = list(
start = class_double,
end = class_double
),
validator = function(self) {
if (length(self@start) != 1) {
"@start must be length 1"
} else if (length(self@end) != 1) {
"@end must be length 1"
} else if (self@end < self@start) {
"@end must be greater than or equal to @start"
}
}
)

# Создаем корректный объект
valid_range <- new_object(Range, start = 1, end = 10)
print(valid_range)

# Проверка с некорректными данными
tryCatch(
new_object(Range, start = 10, end = 5),
error = function(e) message("Ошибка: ", e$message)
)


2. Создание методов
Методы создаются через обобщенные функции (new_generic()). Это упрощает настройку поведения для различных классов.

Пример:
greeting <- new_generic("greeting", function(x) NULL)
method(greeting, Range) <- function(x) {
paste("Диапазон начинается с", x@start, "и заканчивается", x@end)
}

greeting(valid_range) # Диапазон начинается с 1 и заканчивается 10


3. Совместимость с S3
S7 интегрируется с S3-методами, что облегчает переход на новую систему. Например, можно использовать существующие S3-классы как базовые.

4. Наследование классов
Создание иерархий классов позволяет расширять возможности базового класса.

Пример:
Employee <- new_class("Employee", parent = Range, properties = list(
name = class_character
))

worker <- Employee(start = 9, end = 18, name = "Jane")
print(worker)


Производительность и планы на будущее

S7 разработан с учетом высокой производительности: проверки свойств реализованы на уровне C, что делает его подходящим для обработки больших объемов данных. В будущем планируется включить поддержку S7-классов в базовый R, что сделает их стандартом.

Почему стоит использовать S7?

Простота: Создание классов и методов не сложнее, чем в S3.
Надежность: Строгая типизация предотвращает ошибки.
Универсальность: Подходит для создания библиотек, построения API и работы с данными.

Ссылки:
S7 0.2.0 (eng)

Так же про ООП в R
ООП в языке R (часть 1): S3 классы
ООП в языке R (часть 2): R6 классы

#новости_и_релизы_по_R



group-telegram.com/R4marketing/1327
Create:
Last Update:

S7 0.2.0: Новый стандарт ООП в R

S7 — это гибкий и мощный инструмент для объектно-ориентированного программирования в R, предлагающий строгость S4 и простоту S3. Новая версия 0.2.0 усиливает производительность, вводит улучшенную совместимость с S3 и добавляет гибкие валидаторы. Проектирование и реализация S7 были совместными усилиями рабочей группы из R Consortium , включая представителей R-Core, Bioconductor, tidyverse/Posit, ROpenSci и более широкого сообщества R. В будущем разработчики планируют интеграцию S7 в базовый R.

Установите пакет, чтобы попробовать новый подход к ООП:

install.packages("S7")


Основные возможности S7

1. Создание классов
S7 позволяет определять классы с четкими типами свойств. Для обеспечения корректности данных можно использовать валидаторы.

Пример:
Range <- new_class("Range",
properties = list(
start = class_double,
end = class_double
),
validator = function(self) {
if (length(self@start) != 1) {
"@start must be length 1"
} else if (length(self@end) != 1) {
"@end must be length 1"
} else if (self@end < self@start) {
"@end must be greater than or equal to @start"
}
}
)

# Создаем корректный объект
valid_range <- new_object(Range, start = 1, end = 10)
print(valid_range)

# Проверка с некорректными данными
tryCatch(
new_object(Range, start = 10, end = 5),
error = function(e) message("Ошибка: ", e$message)
)


2. Создание методов
Методы создаются через обобщенные функции (new_generic()). Это упрощает настройку поведения для различных классов.

Пример:
greeting <- new_generic("greeting", function(x) NULL)
method(greeting, Range) <- function(x) {
paste("Диапазон начинается с", x@start, "и заканчивается", x@end)
}

greeting(valid_range) # Диапазон начинается с 1 и заканчивается 10


3. Совместимость с S3
S7 интегрируется с S3-методами, что облегчает переход на новую систему. Например, можно использовать существующие S3-классы как базовые.

4. Наследование классов
Создание иерархий классов позволяет расширять возможности базового класса.

Пример:
Employee <- new_class("Employee", parent = Range, properties = list(
name = class_character
))

worker <- Employee(start = 9, end = 18, name = "Jane")
print(worker)


Производительность и планы на будущее

S7 разработан с учетом высокой производительности: проверки свойств реализованы на уровне C, что делает его подходящим для обработки больших объемов данных. В будущем планируется включить поддержку S7-классов в базовый R, что сделает их стандартом.

Почему стоит использовать S7?

Простота: Создание классов и методов не сложнее, чем в S3.
Надежность: Строгая типизация предотвращает ошибки.
Универсальность: Подходит для создания библиотек, построения API и работы с данными.

Ссылки:
S7 0.2.0 (eng)

Так же про ООП в R
ООП в языке R (часть 1): S3 классы
ООП в языке R (часть 2): R6 классы

#новости_и_релизы_по_R

BY R4marketing | канал Алексея Селезнёва | Язык R




Share with your friend now:
group-telegram.com/R4marketing/1327

View MORE
Open in Telegram


Telegram | DID YOU KNOW?

Date: |

During the operations, Sebi officials seized various records and documents, including 34 mobile phones, six laptops, four desktops, four tablets, two hard drive disks and one pen drive from the custody of these persons. Official government accounts have also spread fake fact checks. An official Twitter account for the Russia diplomatic mission in Geneva shared a fake debunking video claiming without evidence that "Western and Ukrainian media are creating thousands of fake news on Russia every day." The video, which has amassed almost 30,000 views, offered a "how-to" spot misinformation. The Securities and Exchange Board of India (Sebi) had carried out a similar exercise in 2017 in a matter related to circulation of messages through WhatsApp. In the United States, Telegram's lower public profile has helped it mostly avoid high level scrutiny from Congress, but it has not gone unnoticed. DFR Lab sent the image through Microsoft Azure's Face Verification program and found that it was "highly unlikely" that the person in the second photo was the same as the first woman. The fact-checker Logically AI also found the claim to be false. The woman, Olena Kurilo, was also captured in a video after the airstrike and shown to have the injuries.
from nl


Telegram R4marketing | канал Алексея Селезнёва | Язык R
FROM American