Kotlin. Быстрое вступление
Статья проплачена кошками — всемирно известными производителями котят.
Если статья вам понравилась, то можете поддержать проект.
Исходный код хранится в файлах с расширением .kt (почему не .kot?).
В языке используется «кошачий принцип» — чем меньше печатаешь код, тем больше времени останется на сон.
Например, необязательно ставить точку с запятой в конце выражения. Так поступает JavaScript и многие новые языки программирования.
// и так сойдёт val x = 1 val y = 2
В Kotlin есть единственное место, где точка с запятой обязательна — в перечислении enum
Необязательно объявлять тип переменной, если из контекста понятно её предназначение. Если брать предыдущий пример, то по значению 1 можно догадаться, что переменная является типом Int.
Узнать тип переменной в студии можно через комбинацию клавиш Ctrl+Shift+P
Kotlin не делит типы на примитивные и их обёртки.
Можно сразу вызывать println вместо длинного System.out.println. Стандартная библиотека Kotlin включает в себя популярные методы Java для быстрого доступа.
Например, можно быстро получить содержимое файла с сервера через метод URL.readText():
// не вызывать в основном потоке! val address = "http://example.com" val someText = URL(address).readText()
Объявление переменных
В Java мы сначала указываем тип переменной, а потом её имя. В Kotlin немного не так. Сначала вы указываете ключевое слово val или var, затем имя переменной и по желанию можете указать тип переменной.
val kitty = "Васька" val age = 7 // необязательно, но укажем тип val weight: Int = 3 val catName: String = "Мурзик" val actionBar = supportActionBar // объект ActionBar в активности без new
Если вы не инициализируете переменную, то тип указать нужно обязательно.
val age: Int age = 7
Иногда тип указывать обязательно.
val a: Any = 12 val context: Context = activity
Ключевое слово val (от слова value) ссылается на неизменяемую переменную, что соответствует ключевому слову final в Java.
// Java final String name = "Васька"; // Kotlin val name = "Васька"
А часто используемое выражение в Java можно заменить на конструкцию с ключевым словом const (применимо только к базовым типам):
// Java public static final String CAT_TALK = "meow"; // Kotlin const val CAT_TALK = "meow"
Для обычных изменяемых переменных используется ключевое слово var (от слова variable).
Рекомендуется всегда использовать val, если это позволяет логика программы.
При этом нужно помнить, что хотя ссылка val неизменяема, сам объект может быть изменяемым:
val cats = arrayListOf("Васька") cats. add("Барсик")
При использовании var вы можете не указывать тип переменной, но это не значит, что вы можете использовать его не по назначению, это вам не PHP.
var answer = 42 // так нельзяanswer = "нет ответа"
Возникает вопрос, а в чём разница между val и const? В некоторых случаях поведение будем одинаковым, но есть разница в подходе. Мы можем использовать const для константы на этапе компиляции, а для val мы можем присвоить неизменяемое значение на этапе рантайма.
const val catName = "Мурзик" // можно val catName = "Мурзик" // тоже можно const val catName = getCompanyName() // нельзя, нужно сразу присвоить значение без вычислений val catName = getCompanyName() // а так можно
Когда и где использовать val и const? Рассмотрим пример.
// какой-то класс MyClass { companion object { const val FILE_EXTENSION = ". png" val FILENAME: String get() = "img_" + System.currentTimeMillis() + FILE_EXTENSION } }
Расширение класса можно считать константой. А имя файла вычисляется на основе времени и его нельзя использовать как константу.
Ключевое слово inline
Ещё одно новое ключевое слово в Kotlin.
Псевдоним для импорта
Чтобы не путаться с именами классов из разных пакетов, можно присвоить новый псевдоним.
import android.os.Bundle import ru.alexanderklimov.cat.Bundle as CatBundle fun getBundle() { val bundle1 = Bundle() val bundle2 = CatBundle() }
typealias
Псевдоним типа позволяет определить для существующего типа альтернативное имя, которое может использоваться в коде. Если в вашем коде используется функциональный тип, например такой, как (Double) -> Double, — вы сможете определить псевдоним, который будет использоваться вместо этого типа, чтобы ваш код лучше читался. Псевдонимы типов определяются ключевым словом typealias.
typealias DoubleConversion = (Double) -> Double
При помощи typealias можно определять альтернативные имена для любых типов, не только функциональных. Например, следующее определение typealias CatArray = Array<Cat> позволяет обращаться к типу по имени CatArray вместо Array<Cat>
.Исключения
Создадим собственное исключение.
class CustomException(message:String): Exception(message)
Теперь можем кинуть созданное исключение в своём коде в нужном месте.
throw CustomException("Threw custom exception")
Реклама
Стандартная библиотека | PHP | CodeBasics
PHP поставляется с набором полезных функций. Вместе они составляют стандартную библиотеку. Обычно в нее входят тысячи функций, которые невозможно выучить, что и не нужно делать. В этом уроке мы дадим рекомендации по работе с новыми функциями.
Подразумевается, что любой программист знает, где искать документацию по ним и примерно представляет себе, чего он хочет достичь. Поэтому программировать без интернета крайне сложно.
Часто новички не знают, куда нужно идти и что искать. Эти знания и навыки приходят с опытом. Во время обучения и работы они знакомятся с более интересными функциями, которые решают их задачи более удобным способом. Так они и пополняют свой арсенал.
Вот некоторые советы, как узнавать о новых функциях:
- Всегда нужно отслеживать, с каким типом данных идет работа. Необходимые функции можно найти в соответствующем разделе документации. Например, для работы со строками нужно изучать строковые функции
- Периодически нужно открывать раздел со стандартными функциями по изучаемой тематике. Нужно изучать их, сигнатуры и способы использования
- Необходимо часто читать чужой код, особенно, код библиотек, которые используются нами. Он всегда доступен на GitHub
Еще одна особенность функций PHP из стандартной библиотеки в том, что они доступны глобально. Их можно вызывать в любом месте программы. Правда это не работает с функциями, написанными самостоятельно.
Большинство функций стандартной библиотеки сосредоточено вокруг определенных функциональности или типа данных. Например, есть большой блок функций по обработке строк, с числами и так далее. По некоторым из них мы пройдемся в процессе обучения.
Задание
Функция gettype()
позволяет определить тип передаваемого аргумента. Название типа возвращается в виде строки. Например, вызов gettype(10)
вернёт строку "integer"
(integer — целое число).
Выведите на экран тип значения переменной $motto
.
Если вы зашли в тупик, то самое время задать вопрос в «Обсуждениях». Как правильно задать вопрос:
- Обязательно приложите вывод тестов, без него практически невозможно понять что не так, даже если вы покажете свой код. Программисты плохо исполняют код в голове, но по полученной ошибке почти всегда понятно, куда смотреть.
Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.
Мой код отличается от решения учителя 🤔Это нормально 🙆, в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи.
В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.
Прочитал урок — ничего не понятно 🙄Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в «Обсуждениях». Идеально, если вы сформулируете непонятные моменты в виде вопросов. Обычно нам нужно несколько дней для внесения правок.
Кстати, вы тоже можете участвовать в улучшении курсов: внизу есть ссылка на исходный код уроков, который можно править прямо из браузера.
Полезное
Описание строковых функций
Определения
←Предыдущий
Следующий→Нашли ошибку? Есть что добавить? Пулреквесты приветствуются https://github.com/hexlet-basics
Как использовать глобальную переменную PHP $_GET
В этом руководстве мы познакомим вас с основами использования глобальной переменной PHP $_GET для обработки входящих данных GET.
В PHP $_GET — это суперглобальная переменная, представляющая собой ассоциативный массив переменных. Эта переменная содержит данные, которые были отправлены с использованием метода HTTP GET. Например, запрос GET отправляется как URL-адрес и может содержать строку запроса, содержащую пары «имя-значение».
Поскольку данные запроса GET доступны в URL-адресе, не рекомендуется использовать его для конфиденциальных данных, поскольку их можно легко просмотреть, добавить в закладки и кэшировать. Вместо этого рекомендуется использовать запрос POST для данных, которые считаются конфиденциальными.
GET можно использовать по-разному, но лучше всего он работает в качестве запроса. Например, поисковый запрос, операция чтения, поиск данных и т.п. Использование строки запроса также является популярным способом определения кодов отслеживания.
Альтернативой использованию $_GET является суперглобальная переменная $_POST. Используя переменную $_POST, вы можете получить доступ к данным, отправленным с помощью HTTP-запроса POST. Например, вы должны использовать запрос POST для таких данных, как заказы электронной коммерции, логины и поля комментариев.
В этом руководстве объясняются основы HTTP-запроса GET и способы использования суперглобальной переменной $_GET в PHP для обработки GET-запроса. Все эти концепции жизненно важны для разработки веб-приложения, использующего PHP.
Что такое метод HTTP GET
Метод GET использует HTTP (протокол передачи гипертекста) для отправки запроса на сервер. В зависимости от данных в запросе сервер отправит ответ клиенту. Двумя наиболее распространенными типами HTTP-запросов являются GET и POST.
Запрос GET отправляется как URL-адрес и может содержать строку запроса, содержащую пары «имя-значение».
Строка запроса представляет собой данные после ?
в URL. Если вы хотите определить несколько имя=значение
пары, вам нужно будет использовать и
после каждой пары.
Есть несколько вещей, которые вам нужно знать о запросах GET.
- Ограничения браузера ограничивают длину запроса GET, примерно от 2 КБ до 8 КБ, в зависимости от браузера. Принимающий сервер также может установить ограничение.
- Вы можете добавлять запросы GET в закладки в браузере.
- Запрос GET может быть кэширован.
- Вы можете найти запросы GET в истории браузера.
- Запросы GET не следует использовать с конфиденциальными данными, поскольку их можно легко просмотреть, кэшировать или даже добавить в закладки.
Вы можете просмотреть заголовки, отправленные с запросом, на вкладке сети инструментов разработчика браузера. Вы можете увидеть тип запроса в заголовках HTTP, ища заголовок метода . В приведенном ниже примере используется метод GET.
Пример использования $_GET в PHP
Мы можем использовать суперглобальную переменную $_GET в PHP для обработки пар имя-значение, составляющих необязательную строку запроса. Кроме того, вы можете использовать переменную $_GET в любой области вашего PHP-скрипта, поскольку это глобальная переменная.
У нас есть пример сценария для демонстрации использования переменной $_GET. Мы быстро объясним код ниже.
Во-первых, у нас есть раздел кода PHP, где мы создаем две переменные $bg_color
и $text
. Для каждой переменной мы присваиваем значение из нашей переменной $_GET
. Поскольку наши переменные $_GET
могут быть введены пользователем, мы пропускаем значение через функцию htmlspecialchars перед его использованием.
Наконец, у нас есть HTML-код, в котором мы выводим значения наших двух переменных. Мы повторяем значение цвета в нашем HTML-теге body для цвета фона страницы. Кроме того, для текста мы повторяем значение текстовой переменной внутри HTML-тегов h2.
Это простой сценарий PHP, но мы надеемся, что он должен объяснить основы использования PHP для доступа к парам «имя-значение» строки запроса URL.
Ниже приведен URL-адрес, который мы отправим указанному выше PHP-скрипту. Мы назвали наш скрипт get.php
и сохранили его на доступном локальном сервере разработки.
Наша строка запроса имеет bg=beige
, где имя — это bg , а значение — это бежевый . Вы можете получить доступ к значению с помощью имя в нашей переменной GET, например, $_GET['bg']
.
Та же логика с text=Hello%20World
, где значение доступно по имени, например, $_GET['text']
. Кроме того, обратите внимание, что у нас есть амперсанд ( и
), разделяющий наши пары имя-значение, вам нужно будет сделать это для каждой дополнительной пары имя-значение.
Мы получаем следующий вывод, введя указанный выше URL в наш браузер. Фон бежевого цвета, а заголовок «Hello World». Изменение любого из этих значений в нашем URL-адресе изменит вывод нашей страницы.
Заключение
Я надеюсь, что к концу этого урока вы поймете основы запроса GET и как вы можете использовать $_GET для обработки строки запроса в PHP. Вы, вероятно, будете использовать запросы GET, когда дело доходит до большинства типов веб-разработки.
У нас есть много других руководств по PHP, которые познакомят вас со многими другими основами. Например, если вы новичок, я рекомендую узнать больше о циклах for, операторах if-else и переменных.
Сообщите нам, если вы заметили ошибку или в этом руководстве отсутствует важная тема.
Как передать переменную PHP в JavaScript
Для чего-то, казалось бы, столь прямолинейного, можно подумать, что информация по этому вопросу будет немного лучше. На самом деле передать переменную из PHP в JavaScript очень просто! Есть всего пара вещей, о которых вам нужно помнить, и несколько способов сделать это, чтобы убедиться, что это действительно работает.
Я считаю, что размещение следующего кода в разделе
моего веб-сайта является наиболее надежным методом:
$php_variable = ‘строка’; //Определяем нашу переменную PHP. Конечно, вы можете получить значение этой переменной, как вам нужно. ?>
|
Вот и все! Вы просто сначала определяете переменную PHP, а затем повторяете ее в базовом операторе объявления переменной JS. Я знаю, что есть много способов определить переменную JavaScript, но я считаю, что этот работает в большинстве случаев. Я не эксперт здесь, но большинство других, похоже, не работают большую часть времени.
Для этого следует помнить несколько вещей:
1. Переменная PHP должна быть определена до переменной JS.
2. Переменная JS должна быть определена до того, как вы действительно где-либо будете ее использовать. Это кажется очевидным, но если вы забудете об этом факте и попытаетесь поместить это объявление в нижний колонтитул вашего сайта, а затем использовать его в контенте, вы обнаружите, что оно не работает! Вот почему мне нравится размещать это в разделе заголовка моего веб-сайта. Или, если вы работали в WordPress или другой CMS, обязательно поместите его в файл header.php вашей активной темы.
Кроме того, вы должны знать, что если ваша переменная , а не является строкой, а числом, вы можете определить ее без кавычек, например:
Обратите внимание, что, как упомянула Шерри в комментариях, если у вас есть более сложные строки или любые строки с кавычками («) в них, это сломается.