Академия Кода – Telegram
Академия Кода
2.01K subscribers
673 photos
2 videos
2 files
50 links
Академия кода. Полезный контент по программированию. По всем вопросам @evgenycarter
Download Telegram
Как убрать лишние пробелы из строки в javanoscript?

Как вариант использовать регулярные выражения, пример:

var stringTest = " I am Test String ";
// IamTestString
console.log(stringTest.replace(/\s+/g, ''));



Второй вариант это разбить на массив по пробелы и потом соединить строку снова:

var stringTest = " I am Test String ";
// IamTestString
console.log(stringTest.split(' ').join(''));


#javanoscript

Подписывайтесь на канал 👉@coddy_academy
👍3
Как вернуть два значения из метода в java?

Вы можете возвращать массив значений из метода.

class Main {
public static int[] get_summ_and_diff(int x, int y){
int summ = x + y;
int diff = x - y;

return new int[]{summ, diff};
}

public static void main(String[] args) throws Exception {
int[] diff_and_summ = get_summ_and_diff(10, 5);

System.out.println(diff_and_summ[0]);
System.out.println(diff_and_summ[1]);

// Вывод :
// 15
// 5
}
}


#java

Подписывайтесь на канал 👉@coddy_academy
👍2👎1
grid-row-start и grid-row-end

grid-row-start и grid-row-end свойства позволяют отдельным элементам сетки занимать несколько строк. Свойство grid-row-start определяет, с какой строки начинается элемент, а grid-row-end определяет, сколько строк занимает элемент или на какой строке заканчивается.

#css

Подписывайтесь на канал 👉@coddy_academy
👍2
Handlebar.compile()

Handlebar.compile() может использоваться для создания функции шаблона. Строка шаблона с выражениями должна быть передана в Handlebar.compile(). Затем эта функция принимает объект в качестве аргумента, интерполирует значения объекта в выражения шаблона и возвращает завершенную строку HTML.

#javanoscript

Подписывайтесь на канал 👉@coddy_academy
👍2
Как конвертировать string в int на java?

Вы можете использовать метод parseInt класса Integer - Integer.parseInt(string_number)

class Main {
public static void main(String[] args) throws Exception {
String string_number = "982737";

int int_number = Integer.parseInt(string_number);

System.out.println(int_number); // Вывод : 982737
}
}

#java

Подписывайтесь на канал 👉@coddy_academy
👍3
Как сделать выход из цикла while в C++?

Вы можете использовать break чтобы сделать выход из цикла while в C++, небольшой пример кода на скрине:

#cpp

Подписывайтесь на канал 👉@coddy_academy
👍1
Что такое discardableResult и как использовать этот атрибут?

Во время написания функций или методов в Swift мы в некоторых случаях хотим игнорировать возвращаемое значение, а в других – все же иметь возможность обработать его. Если попытаться вызвать метод, который возвращает значение, и никак его не обработать, получим предупреждение "Result of call to 'foo()' is unused".

Атрибут discardableResult позволяет убрать данное предупреждение. В случае правильного использования эта небольшая функция (о которой, тем не менее, стоит знать) улучшит чистоту вашего кода и позволит вам не использовать нижнее подчеркивание, чтобы игнорировать результат.

Перед написанием каждого метода хорошо подумайте, важно ли обрабатывать возвращаемое значение. В некоторых случаях лучше будет всё-таки заставить пользователя вашего метода хендлить его. Например, если есть необходимость сообщить важную информацию (о возникшей ошибке и пр.).

#swift

Подписывайтесь на канал 👉@coddy_academy
👍1
Метод get() для словаря

Python предоставляет метод .get() для доступа к значению словаря, если оно существует. Этот метод принимает key в качестве первого аргумента и необязательное значение по умолчанию в качестве второго аргумента, возвращает значение для указанного key, если key есть в словаре. Если второй аргумент не указан и key не найден, то возвращается None.

#python

Подписывайтесь на канал 👉@coddy_academy
👍1
Что такое параметры inout?

Когда мы передаем value типы в качестве аргументов в функцию, они статичны – менять их нельзя. Было бы удобно иметь возможность модифицировать данные значения. К счастью, у Swift для этого есть решение: ключевое слово inout, которое используется перед типом параметра в связке с '&' перед аргументом. Это позволит нам модифицировать значение внутри функции.

На самом деле, мы не модифицируем значением напрямую. Такое поведение называется "copy-in copy-out" или же "call by value result" и работает следующим образом:
1. Когда мы вызываем функцию, значение аргумента копируется.
2. Дальше внутри функции копия модифицируется.
3. По возращению функции Swift присваивает модифицированное значение оригинальному аргументу.

Параметры inout встречаются чаще, чем вам может показаться на первый взгляд. Например, оператор += использует inout для изменения строки, когда вы хотите добавить одну строку к другой.

#swift

Подписывайтесь на канал 👉@coddy_academy
👍1
Handlebars выражение {{else}}

Handlebars выражение {{else}} можно вставить в помощник блока {{if}}. Содержимое шаблона внутри секции else вступает в силу, когда предыдущие условия ложные.

#javanoscript

Подписывайтесь на канал 👉@coddy_academy
👍2
Как удалить директорию в java?

Вы можете использовать File.delete() для удаления директории.

import java.io.File;

class Main {
public static void main(String[] args) throws Exception {
File file = new File("delete_folder");

if (file.delete()){
System.out.println("Директория успешно удалена");
}
}
}

#java

Подписывайтесь на канал 👉@coddy_academy
👍1
Как декодировать property list используя Decodable?

Property list, обычно сокращенно plist, представляет собой XML-файл, содержащий данные в формате "ключ-значение". Вы можете использовать его в своих приложениях для iOS в качестве простого хранилища данных. Эта функция-утилита позволит вам задекодить данные в нужный удобный вам тип, используя Decodable.


extension Bundle {
func decodePlist<T: Decodable>(_ filename: String, to entity: T.Type) -> T? {
guard
let path = Bundle.main.path(forResource: filename, ofType: "plist"),
let xml = FileManager.default.contents(atPath: path),
let content = try? PropertyListDecoder().decode(T.self, from: xml)
else { return nil }
return content
}
}

#swift

Подписывайтесь на канал 👉@coddy_academy
👍1
Сортировка словаря по значениям

Распространена практика использования словарей в качестве таблиц для хранения данных. Сортировка данных словаря по значениям ключей, а не самим ключам, нередко ставит в тупик. Задача решается довольно просто при помощи соответствующего аргумента функции сортировки

#python

Подписывайтесь на канал 👉@coddy_academy
👍1
Свойство .count

Свойство .count возвращает целое число, представляющее количество пар ключ-значение в словаре.

#swift

Подписывайтесь на канал 👉@coddy_academy
Парсинг JSON файлов в словарь

Формат JSON используется для хранения пар ключ-значение. Python json модуль позволяет считывать такой формат данных и парсить его в словарь. Функция json.load принимает файловый объект в качестве аргумента и возвращает данные в формате словаря.

#python

Подписывайтесь на канал 👉@coddy_academy
👍2
Как проверить содержится ли элемент в массиве на java?

Вы можете использовать условие и цикл для проверки существования элемента в массиве.

class Main {
public static void main(String[] args) throws Exception {
int[] firstArray = new int[]{52, 21, 94, 29, 91};
int[] secondArray = new int[]{82, 74, 51, 39, 23};

int element = 21;

for (int i = 0; i < firstArray.length; i++) {
if (firstArray[i] == element){
System.out.println(element + " in first array");
}
}

for (int i = 0; i < secondArray.length; i++) {
if (secondArray[i] == element){
System.out.println(element + " in second array");
}
}
// Вывод : 21 in first array
}
}

#java

Подписывайтесь на канал 👉@coddy_academy
👍1👎1
Как использовать ключевое слово rethrows?

По моему опыту, использовать это ключевое слово вы будете не слишком часто. Тем не менее, понимание принципов его работы поможет вам лучше определять случаи, когда rethrows будет полезным.

Ключевое слово rethrows используется, когда вы пишете функцию (назовем ее A), которая принимает другую функцию в качестве параметра (назовем ее B). Rethrows делает так, что если функция B выбрасывает ошибки, тогда и A будет выбрасывать ошибки. Если функция B не выбрасывает ошибки, тогда и A этого делать не будет.

Какое преимущество мы получаем? Rethrows позволяет убрать лишние try/catch в случаях, где они не нужны.

Возьмем стандартные 'map', 'filter', 'forEach' для массивов. Когда вы внутри замыкания помечаете что-то как try, Swift просит вас добавить try еще и для вызова "Call can throw but is not marked with 'try'". Если внутри замыкания ничего ошибку выбрасывать не будет, тогда и целый вызов помечать try не нужно.

Данное поведение во всех описанных выше методах реализовано‌‌‎ с помощью rethrows‎.‌‌‎​ 

#swift

Подписывайтесь на канал 👉@coddy_academy
👍2
Justify Self

CSS свойство justify-self используется для того, чтобы определить, как отдельный элемент сетки позиционирует себя вдоль строки или встроенной оси. По умолчанию элементы сетки наследуют значение justify-items свойства контейнера. Если установлено значение justify-self, оно переопределит унаследованное значение justify-items.

#css

Подписывайтесь на канал 👉@coddy_academy
👍1
Как использовать String в качестве ошибок?

Обычно, чтобы сообщать о том, что операция завершилась с ошибкой, в Swift используется протокол Error. Когда мы проектируем чистое API, обычной практикой для выполнения данной цели является создание собственного error enum, в котором прописываются нужные варианты ошибок под конкретный функционал.

Но что делать, если мы хотим получить простое решение для случаев, когда ошибки единичные и смысла создавать отдельный enum нет?

Тогда можно реализовать LocalizedError для String и использовать строку в качестве ошибки. Такой вариант идеально подойдет для возвращение простых, user-facing ошибок.


extension String: LocalizedError {
public var errorDenoscription: String? { self }
}

func loadDataFromServer(result: @escaping (Result<String, Error>) -> Void) {
// ...
result(.failure("Что-то пошло не так"))
}



#css #handyExtensions #error #basic #swift

Подписывайтесь на канал 👉@coddy_academy
Обработка ошибок асинхронной функции

Функции JavaScript async используют try...catch операторы для обработки ошибок. Этот метод позволяет совместно обрабатывать ошибки для синхронного и асинхронного кода.

#javanoscript

Подписывайтесь на канал 👉@coddy_academy
👍2
Запись в файл

По умолчанию файл при открытии с помощью open() предназначен только для чтения. Второй аргумент 'r' передается ему по умолчанию. Чтобы записать в файл, сначала откройте файл с разрешением на запись с помощью аргумента 'w'. Затем используйте метод .write() для записи в файл. Если файл уже существует, все предыдущее содержимое будет перезаписано.

#python

Подписывайтесь на канал 👉@coddy_academy
👍2