Одним словом: нет. Единственный способ расширить изображение с эти <img>
тег. Необходимо будет быть творческими.
Это раньше было верно в 2008, когда ответ был записан. Сегодня современная поддержка браузеров background-size
, который решает эту проблему. Остерегайтесь этого, IE8 не поддерживает его.
Наличие нескольких классов и объектов внутри одного файла считается хорошим тоном в Scala, если классы тесно связаны.
Хотя это и не обязательно, тип, возвращаемый методом - именованная функция, объявленная для признака, класса или объекта - ожидается, что она будет объявлена для не приватных методов. Пробелы ожидаются после :
, но не перед ним.
// methods declared on a class, trait or object
def length: Int = ...
def multiply(other: Foo): Foo = ...
def hypotenuse(a: Double, b: Double): Double = {
// function inside a method, so effectively private
def square(x: Double) = x * x
math.sqrt(square(a) + square(b))
}
В точечной нотации между ключевыми словами и скобками должны быть пробелы, но не между именем метода и следующей скобкой. Для обозначения операторов, похоже, не существует общепринятого стиля в отношении скобок - или того, когда использовать эту нотацию, если на то пошло, но в такой нотации ожидаются пробелы вокруг не буквенно-цифровых методов.
// keywords
if (foo) ...
// dot notation
foo.doSomething(bar)
// operator notation
foo doSomething bar
foo + bar
В исключительных случаях при объединении строк с +
, рекомендуемый стиль - не использовать пробелы вокруг него. Например:
// concatenate strings
println("Name: "+person.name+"\tAge: "+person.age)
Объявления, которые могут быть однострочными, должны быть однострочными, если вложенность не очевидна.
// one-liners
lazy val foo = calculateFoo
def square(x: Int) = x * x
Методы, которые не ожидают параметров и не имеют побочных эффектов, должны быть используется без скобок, за исключением методов Java, которые предполагается использовать в скобках. Методы без параметров с побочными эффектами должны использоваться в круглых скобках.
// without side-effects
val x = foo.length
val y = bar.coefficient
// with side-effects
foo.reverse()
Ожидается, что объявления, содержащие одно выражение, не будут заключены в фигурные скобки, если это невозможно из-за других синтаксических соображений. Заключение выражения в круглые скобки для включения многострочных выражений допустимо, но я видел мало пользы от этого.
// single-line expression
def sum(list: List[Int]): Int = if (!list.isEmpty) list reduceLeft (_ + _) else 0
// multi-line expression
val sum = (
getItems
reduceLeft (_ + _)
)
В for-complation, поддержание генераторов и условий по вертикали, выровненных по вертикали, кажется принятым стилем. Что касается yield
, я видел, что он выровнен с для
и с отступом.
// for-comprehensions
val squares =
for (x <- numbers)
yield x * x
// Curly brackets-style identation
val cells = for {
x <- columns
y <- rows
if x != y
} yield Cell(x, y)
// Parameter-style identation
val cells = for (x <- columns;
y <- rows;
if x != y)
yield Cell(x, y)
Также принят стиль для вертикального выравнивания параметров объявления класса.
Говоря об отступах, принятым соглашением является два пробела.
Фигурные скобки должны начинаться на одной строке объявления и заканчиваться вертикально, выровненными с этой строкой.
// another example
def factorial(n: Int): Int = {
def fact(n: Int, acc: Int): Int = n match {
case 0 => acc
case x => fact(x - 1, x * acc)
}
fact(n, 1)
}
Для процедур - функции. чей возвращаемый тип - Unit
- ожидаемый стиль должен был заключаться в том, чтобы не указывать тип метода и знак равенства:
// procedures
def complain {
println("Oh, no!")
}
Некоторые люди думают, что этот стиль подвержен ошибкам, однако, поскольку пропущенный знак равенства изменит функцию, возвращающую что-то иное, кроме Unit
в процедуру.
Идентификаторы записываются в верблюжьем регистре (например: identifiersHaveHumps
), как в Java. Имена полей, параметров методов, локальных переменных и функций начинаются со строчной буквы. Классы, признаки и типы начинаются с заглавной буквы.
В отличие от соглашения Java, имена констант. В Scala обычно используется стандартный регистр верблюда, начинающийся с заглавной буквы. Например, Pi
, а не PI
, XOffset, а не X_OFFSET
. Этому правилу обычно следует любой синглтон. Представление констант и синглтонов таким образом имеет практические последствия для совпадения регистра:
import scala.Math.Pi
val pi = Pi // this identifier will be shadowed by the identifier in the function below
def isPi(n: Double): Boolean = n match {
case Pi => println("I got a true Pi."); true
case pi => println("I got "+pi+" and bounded it to an identifier named pi."); false
}
Имена пакетов начинаются со строчной буквы. Это особенно полезно при различении в операторе импорта того, что является пакетом, а что нет. В предыдущем примере Math
не является пакетом (это синглтон), так как он начинается с заглавной буквы.
Использование символа подчеркивания - _
- не рекомендуется, так как этот символ имеет много специальных значений в Scala. Эти правила для идентификаторов можно найти на страницах 141 и 142 книги «Программирование на Scala», авторы Odersky, Spoon & Venners
. Прямо сейчас я не могу вспомнить другие ситуации, но не стесняйтесь просить разъяснений по конкретным вопросам. Некоторые из этих правил были четко сформулированы, другие больше согласованы сообществом. Я пытался не учитывать свои собственные предпочтения, но, возможно, у меня ничего не вышло.
Что еще более важно, возможно, на самом деле нет единого соглашения. Одна из причин этого может заключаться в том, что Scala привлекает людей из самых разных слоев общества, таких как знатоки функционального языка, программисты Java и энтузиасты Web 2.0.
Использование символа подчеркивания - _
- не рекомендуется, так как этот символ имеет много специальных значений в Scala. Эти правила для идентификаторов можно найти на страницах 141 и 142 книги «Программирование на Scala», авторы Odersky, Spoon & Venners
. Прямо сейчас я не могу вспомнить другие ситуации, но не стесняйтесь просить разъяснений по конкретным вопросам. Некоторые из этих правил были четко сформулированы, другие больше согласованы сообществом. Я пытался не учитывать свои собственные предпочтения, но, возможно, у меня ничего не вышло.
Что еще более важно, возможно, на самом деле нет единого соглашения. Одна из причин этого может заключаться в том, что Scala привлекает людей из самых разных слоев общества, таких как знатоки функционального языка, программисты Java и энтузиасты Web 2.0.
Использование символа подчеркивания - _
- не рекомендуется, так как этот символ имеет много специальных значений в Scala. Эти правила для идентификаторов можно найти на страницах 141 и 142 книги «Программирование на Scala», авторы Odersky, Spoon & Venners
. Прямо сейчас я не могу вспомнить другие ситуации, но не стесняйтесь просить разъяснений по конкретным вопросам. Некоторые из этих правил были четко сформулированы, другие больше согласованы сообществом. Я пытался не учитывать свои собственные предпочтения, но, возможно, у меня ничего не вышло.
Что еще более важно, возможно, на самом деле нет единого соглашения. Одна из причин этого может заключаться в том, что Scala привлекает людей из самых разных слоев общества, таких как знатоки функционального языка, программисты Java и энтузиасты Web 2.0.
так как этот символ имеет много специальных значений в Scala. Эти правила для идентификаторов можно найти на страницах 141 и 142 книги «Программирование на Scala», авторы Odersky, Spoon & Venners. Прямо сейчас я не могу вспомнить другие ситуации, но не стесняйтесь просить разъяснений по конкретным вопросам. Некоторые из этих правил были четко сформулированы, другие больше согласованы сообществом. Я пытался не учитывать свои собственные предпочтения, но, возможно, у меня ничего не вышло.
Что еще более важно, возможно, на самом деле нет единого соглашения. Одна из причин этого может заключаться в том, что Scala привлекает людей из самых разных слоев общества, таких как знатоки функционального языка, программисты Java и энтузиасты Web 2.0.
так как этот символ имеет много специальных значений в Scala. Эти правила для идентификаторов можно найти на страницах 141 и 142 книги «Программирование на Scala», авторы Odersky, Spoon & Venners. Прямо сейчас я не могу вспомнить другие ситуации, но не стесняйтесь просить разъяснений по конкретным вопросам. Некоторые из этих правил были четко сформулированы, другие больше согласованы сообществом. Я пытался не учитывать свои собственные предпочтения, но, возможно, у меня ничего не вышло.
Что еще более важно, возможно, на самом деле нет единого соглашения. Одна из причин этого может заключаться в том, что Scala привлекает людей из самых разных слоев общества, таких как знатоки функционального языка, программисты Java и энтузиасты Web 2.0.
Одерски, Спун и Веннерс.Прямо сейчас я не могу вспомнить другие ситуации, но не стесняйтесь просить разъяснений по конкретным вопросам. Некоторые из этих правил были четко сформулированы, другие больше согласованы сообществом. Я пытался не учитывать свои собственные предпочтения, но, возможно, у меня ничего не вышло.
Что еще более важно, возможно, на самом деле нет единого соглашения. Одна из причин этого может заключаться в том, что Scala привлекает людей из самых разных слоев общества, таких как знатоки функционального языка, программисты Java и энтузиасты Web 2.0.
Одерски, Спун и Веннерс.Прямо сейчас я не могу вспомнить другие ситуации, но не стесняйтесь просить разъяснений по конкретным вопросам. Некоторые из этих правил были четко сформулированы, другие больше согласованы сообществом. Я пытался не учитывать свои собственные предпочтения, но, возможно, у меня ничего не вышло.
Что еще более важно, возможно, на самом деле нет единого соглашения. Одна из причин этого может заключаться в том, что Scala привлекает людей из самых разных слоев общества, таких как знатоки функционального языка, программисты Java и энтузиасты Web 2.0.
Что еще более важно, возможно, на самом деле нет единого соглашения. Одна из причин этого может заключаться в том, что Scala привлекает людей из самых разных слоев общества, таких как знатоки функционального языка, программисты Java и энтузиасты Web 2.0.
Что еще более важно, возможно, на самом деле нет единого соглашения. Одна из причин этого может заключаться в том, что Scala привлекает людей из самых разных слоев общества, таких как знатоки функционального языка, программисты Java и энтузиасты Web 2.0.
Это очень важный вопрос. Как правило, стиль Scala, кажется, подхватывается просто общением с другими членами сообщества Scala, чтением исходного кода Scala и т. Д. Это не очень помогает новичкам в языке, но указывает на то, что это своего рода стандарт де-факто существует (как выбрано мудростью масс). В настоящее время я работаю над полностью реализованным руководством по стилю для Scala, которое документирует выбранные сообществом соглашения и лучшие практики. Однако а) он еще не закончен, и б) я еще не уверен, что мне разрешат опубликовать его (я пишу его для работы).
Чтобы ответить на ваш второй вопрос (вроде): в общем, каждый класс / черта / объект должен получить свой собственный файл, названный в соответствии с соглашениями об именах Java. Однако, в ситуациях, когда у вас есть много классов, которые разделяют одну общую концепцию, иногда проще (как в краткосрочной, так и в долгосрочной перспективе) поместить их все в один файл. Когда вы это сделаете, имя файла должно начинаться с строчной буквы (все еще camelCase) и описывать общую концепцию.
Мне не очень важен типичный стиль, который используют многие программисты Scala, поэтому я просто применяю тот же стандарт, который использовал бы в C #, Java или особенно JavaScript.
Scala может быть очень выразительным, но использование незнакомого формата увеличит ваш барьер для входа. Особенно с учетом внутренних DSL , которые не могут иметь «Стандарт».
Итак, я прошу сделать все, чтобы ваш код был более читабельным для вас и вашей команды.
Теперь существует полное руководство по стилям Scala, предложенное сообществу . Это еще даже отдаленно не официально, но это единственная (насколько мне известно) кодификация принятых сообществом соглашений.