Packages

  • package root
    Definition Classes
    root
  • package org
    Definition Classes
    root
  • package scalatestplus
    Definition Classes
    org
  • package selenium
    Definition Classes
    scalatestplus
  • trait WebBrowser extends AnyRef

    Trait that provides a domain specific language (DSL) for writing browser-based tests using Selenium.

    Trait that provides a domain specific language (DSL) for writing browser-based tests using Selenium.

    To use ScalaTest's Selenium DSL, mix trait WebBrowser into your test class. This trait provides the DSL in its entirety except for one missing piece: an implicit org.openqa.selenium.WebDriver. One way to provide the missing implicit driver is to declare one as a member of your test class, like this:

    import org.scalatest._
    import selenium._
    import org.openqa.selenium._
    import htmlunit._
    
    class BlogSpec extends FlatSpec with Matchers with WebBrowser {
    implicit val webDriver: WebDriver = new HtmlUnitDriver
    val host = "http://localhost:9000/"
    "The blog app home page" should "have the correct title" in { go to (host + "index.html") pageTitle should be ("Awesome Blog") } }

    For convenience, however, ScalaTest provides a WebBrowser subtrait containing an implicit WebDriver for each driver provided by Selenium. Thus a simpler way to use the HtmlUnit driver, for example, is to extend ScalaTest's HtmlUnit trait, like this:

    import org.scalatest._
    import selenium._
    
    class BlogSpec extends FlatSpec with Matchers with HtmlUnit {
    val host = "http://localhost:9000/"
    "The blog app home page" should "have the correct title" in { go to (host + "index.html") pageTitle should be ("Awesome Blog") } }

    The web driver traits provided by ScalaTest are:

    DriverWebBrowser subtrait
    Google Chrome Chrome
    Mozilla Firefox Firefox
    HtmlUnit HtmlUnit
    Microsoft Internet Explorer InternetExplorer
    Apple Safari Safari

    Navigation

    You can ask the browser to retrieve a page (go to a URL) like this:

    go to "http://www.artima.com"
    

    Note: If you are using the page object pattern, you can also go to a page using the Page instance, as illustrated in the section on page objects below.

    Once you have retrieved a page, you can fill in and submit forms, query for the values of page elements, and make assertions. In the following example, selenium will go to http://www.google.com, fill in the text box with Cheese!, press the submit button, and wait for result returned from an AJAX call:

    go to "http://www.google.com"
    click on "q"
    enter("Cheese!")
    submit()
    // Google's search is rendered dynamically with JavaScript.
    eventually { pageTitle should be ("Cheese! - Google Search") }
    

    In the above example, the "q" used in “click on "q"” can be either the id or name of an element. ScalaTest's Selenium DSL will try to lookup by id first. If it cannot find any element with an id equal to "q", it will then try lookup by name "q".

    Alternatively, you can be more specific:

    click on id("q")   // to lookup by id "q" 
    click on name("q") // to lookup by name "q" 
    

    In addition to id and name, you can use the following approaches to lookup elements, just as you can do with Selenium's org.openqa.selenium.By class:

    • xpath
    • className
    • cssSelector
    • linkText
    • partialLinkText
    • tagName

    For example, you can select by link text with:

    click on linkText("click here!")
    

    If an element is not found via any form of lookup, evaluation will complete abruptly with a TestFailedException.

    Getting and setting input element values

    ScalaTest's Selenium DSL provides a clear, simple syntax for accessing and updating the values of input elements such as text fields, radio buttons, checkboxes, selection lists, and the input types introduced in HTML5. If a requested element is not found, or if it is found but is not of the requested type, an exception will immediately result causing the test to fail.

    The most common way to access field value is through the value property, which is supported by the following input types:

    Tag Name Input Type Lookup Method
    input text textField
    textarea - textArea
    input password pwdField
    input email emailField
    input color colorField
    input date dateField
    input datetime dateTimeField
    input datetime-local dateTimeLocalField
    input month monthField
    input number numberField
    input range rangeField
    input search searchField
    input tel telField
    input time timeField
    input url urlField
    input week weekField

    You can change a input field's value by assigning it via the = operator, like this:

    textField("q").value = "Cheese!"
    

    And you can access a input field's value by simply invoking value on it:

    textField("q").value should be ("Cheese!")
    

    If the text field is empty, value will return an empty string ("").

    You can use the same syntax with other type of input fields by replacing textField with Lookup Method listed in table above, for example to use text area:

    textArea("body").value = "I saw something cool today!"
    textArea("body").value should be ("I saw something cool today!")
    

    or with a password field:

    pwdField("secret").value = "Don't tell anybody!"
    pwdField("secret").value should be ("Don't tell anybody!")
    

    Alternate Way for Data Entry

    An alternate way to enter data into a input fields is to use enter or pressKeys. Although both of enter and pressKeys send characters to the active element, pressKeys can be used on any kind of element, whereas enter can only be used on text entry fields, which include:

    • textField
    • textArea
    • pwdField
    • emailField
    • searchField
    • telField
    • urlField

    Another difference is that enter will clear the text field or area before sending the characters, effectively replacing any currently existing text with the new text passed to enter. By contrast, pressKeys does not do any clearing—it just appends more characters to any existing text. You can backup with pressKeys, however, by sending explicit backspace characters, "\u0008".

    To use these commands, you must first click on the input field you are interested in to give it the focus. Here's an example:

    click on "q"
    enter("Cheese!")
    

    Here's a (contrived) example of using pressKeys with backspace to fix a typo:

    click on "q"              // q is the name or id of a text field or text area
    enter("Cheesey!")         // Oops, meant to say Cheese!
    pressKeys("\u0008\u0008") // Send two backspaces; now the value is Cheese
    pressKeys("!")            // Send the missing exclamation point; now the value is Cheese!
    

    Radio buttons

    Radio buttons work together in groups. For example, you could have a group of radio buttons, like this:

    <input type="radio" id="opt1" name="group1" value="Option 1"> Option 1</input>
    <input type="radio" id="opt2" name="group1" value="Option 2"> Option 2</input>
    <input type="radio" id="opt3" name="group1" value="Option 3"> Option 3</input>
    

    You can select an option in either of two ways:

    radioButtonGroup("group1").value = "Option 2"
    radioButtonGroup("group1").selection = Some("Option 2")
    

    Likewise, you can read the currently selected value of a group of radio buttons in two ways:

    radioButtonGroup("group1").value should be ("Option 2")
    radioButtonGroup("group1").selection should be (Some("Option 2"))
    

    If the radio button has no selection at all, selection will return None whereas value will throw a TestFailedException. By using value, you are indicating you expect a selection, and if there isn't a selection that should result in a failed test.

    If you would like to work with RadioButton element directly, you can select it by calling radioButton:

    click on radioButton("opt1")
    

    you can check if an option is selected by calling isSelected:

    radioButton("opt1").isSelected should be (true)
    

    to get the value of radio button, you can call value:

    radioButton("opt1").value should be ("Option 1")
    

    Checkboxes

    A checkbox in one of two states: selected or cleared. Here's how you select a checkbox:

    checkbox("cbx1").select()
    

    And here's how you'd clear one:

    checkbox("cbx1").clear()
    

    You can access the current state of a checkbox with isSelected:

    checkbox("cbx1").isSelected should be (true)
    

    Single-selection dropdown lists

    Given the following single-selection dropdown list:

    <select id="select1">
     <option value="option1">Option 1</option>
     <option value="option2">Option 2</option>
     <option value="option3">Option 3</option>
    </select>
    

    You could select Option 2 in either of two ways:

    singleSel("select1").value = "option2"
    singleSel("select1").selection = Some("option2")
    

    To clear the selection, either invoke clear or set selection to None:

    singleSel("select1").clear()
    singleSel("select1").selection = None
    

    You can read the currently selected value of a single-selection list in the same manner as radio buttons:

    singleSel("select1").value should be ("option2")
    singleSel("select1").selection should be (Some("option2"))
    

    If the single-selection list has no selection at all, selection will return None whereas value will throw a TestFailedException. By using value, you are indicating you expect a selection, and if there isn't a selection that should result in a failed test.

    Multiple-selection lists

    Given the following multiple-selection list:

    <select name="select2" multiple="multiple">
     <option value="option4">Option 4</option>
     <option value="option5">Option 5</option>
     <option value="option6">Option 6</option>
    </select>
    

    You could select Option 5 and Option 6 like this:

    multiSel("select2").values = Seq("option5", "option6")
    

    The previous command would essentially clear all selections first, then select Option 5 and Option 6. If instead you want to not clear any existing selection, just additionally select Option 5 and Option 6, you can use the += operator, like this.

    multiSel("select2").values += "option5"
    multiSel("select2").values += "option6"
    

    To clear a specific option, pass its name to clear:

    multiSel("select2").clear("option5")
    

    To clear all selections, call clearAll:

    multiSel("select2").clearAll()
    

    You can access the current selections with values, which returns an immutable IndexedSeq[String]:

    multiSel("select2").values should have size 2
    multiSel("select2").values(0) should be ("option5")
    multiSel("select2").values(1) should be ("option6")
    

    Clicking and submitting

    You can click on any element with “click on” as shown previously:

    click on "aButton"
    click on name("aTextField")
    

    If the requested element is not found, click on will throw an exception, failing the test.

    Clicking on a input element will give it the focus. If current focus is in on an input element within a form, you can submit the form by calling submit:

    submit()
    

    Switching

    You can switch to a popup alert bo using the following code:

    switch to alertBox
    

    to switch to a frame, you could:

    switch to frame(0) // switch by index
    switch to frame("name") // switch by name
    

    If you have reference to a window handle (can be obtained from calling windowHandle/windowHandles), you can switch to a particular window by:

    switch to window(windowHandle)
    

    You can also switch to active element and default content:

    switch to activeElement
    switch to defaultContent
    

    Navigation history

    In real web browser, you can press the 'Back' button to go back to previous page. To emulate that action in your test, you can call goBack:

    goBack()
    

    To emulate the 'Forward' button, you can call:

    goForward()
    

    And to refresh or reload the current page, you can call:

    reloadPage()
    

    Cookies!

    To create a new cookie, you'll say:

    add cookie ("cookie_name", "cookie_value")
    

    to read a cookie value, you do:

    cookie("cookie_name").value should be ("cookie_value") // If value is undefined, throws TFE right then and there. Never returns null.
    

    In addition to the common use of name-value cookie, you can pass these extra fields when creating the cookie, available ways are:

    cookie(name: String, value: String)
    cookie(name: String, value: String, path: String)
    cookie(name: String, value: String, path: String, expiry: Date)
    cookie(name: String, value: String, path: String, expiry: Date, domain: String)
    cookie(name: String, value: String, path: String, expiry: Date, domain: String, secure: Boolean)
    

    and to read those extra fields:

    cookie("cookie_name").value   // Read cookie's value
    cookie("cookie_name").path    // Read cookie's path
    cookie("cookie_name").expiry  // Read cookie's expiry
    cookie("cookie_name").domain  // Read cookie's domain
    cookie("cookie_name").isSecure  // Read cookie's isSecure flag
    

    In order to delete a cookie, you could use the following code:

    delete cookie "cookie_name"
    

    or to delete all cookies in the same domain:-

    delete all cookies
    

    To get the underlying Selenium cookie, you can use underlying:

    cookie("cookie_name").underlying.validate()  // call the validate() method on underlying Selenium cookie
    

    Other useful element properties

    All element types (textField, textArea, radioButton, checkbox, singleSel, multiSel) support the following useful properties:

    MethodDescription
    location The XY location of the top-left corner of this Element.
    size The width/height size of this Element.
    isDisplayed Indicates whether this Element is displayed.
    isEnabled Indicates whether this Element is enabled.
    isSelected Indicates whether this Element is selected.
    tagName The tag name of this element.
    underlying The underlying WebElement wrapped by this Element.
    attribute(name: String) The attribute value of the given attribute name of this element, wrapped in a Some, or None if no such attribute exists on this Element.
    text Returns the visible (i.e., not hidden by CSS) text of this element, including sub-elements, without any leading or trailing whitespace.

    Implicit wait

    To set Selenium's implicit wait timeout, you can call the implicitlyWait method:

    implicitlyWait(Span(10, Seconds))
    

    Invoking this method sets the amount of time the driver will wait when searching for an element that is not immediately present. For more information, see the documentation for method implicitlyWait.

    Page source and current URL

    It is possible to get the html source of currently loaded page, using:

    pageSource
    

    and if needed, get the current URL of currently loaded page:

    currentUrl
    

    Screen capture

    You can capture screen using the following code:

    val file = capture
    

    By default, the captured image file will be saved in temporary folder (returned by java.io.tmpdir property), with random file name ends with .png extension. You can specify a fixed file name:

    capture to "MyScreenShot.png"
    

    or

    capture to "MyScreenShot"
    

    Both will result in a same file name MyScreenShot.png.

    You can also change the target folder screenshot file is written to, by saying:

    setCaptureDir("/home/your_name/screenshots")
    

    If you want to capture a screenshot when something goes wrong (e.g. test failed), you can use withScreenshot:

    withScreenshot {
      assert("Gold" == "Silver", "Expected gold, but got silver")
    }
    

    In case the test code fails, you'll see the screenshot location appended to the error message, for example:

    Expected gold but got silver; screenshot capture in /tmp/AbCdEfGhIj.png
    

    Using the page object pattern

    If you use the page object pattern, mixing trait Page into your page classes will allow you to use the go to syntax with your page objects. Here's an example:

    class HomePage extends Page {
      val url = "http://localhost:9000/index.html"
    }
    
    val homePage = new HomePage go to homePage

    Executing JavaScript

    To execute arbitrary JavaScript, for example, to test some JavaScript functions on your page, pass it to executeScript:

    go to (host + "index.html")
    val result1 = executeScript("return document.title;")
    result1 should be ("Test Title")
    val result2 = executeScript("return 'Hello ' + arguments[0]", "ScalaTest")
    result2 should be ("Hello ScalaTest")
    

    To execute an asynchronous bit of JavaScript, pass it to executeAsyncScript. You can set the script timeout with setScriptTimeout:

    val script = """
      var callback = arguments[arguments.length - 1];
      window.setTimeout(function() {callback('Hello ScalaTest')}, 500);
    """
    setScriptTimeout(1 second)
    val result = executeAsyncScript(script)
    result should be ("Hello ScalaTest")
    

    Querying for elements

    You can query for arbitrary elements via find and findAll. The find method returns the first matching element, wrapped in a Some, or None if no element is found. The findAll method returns an immutable IndexedSeq of all matching elements. If no elements match the query, findAll returns an empty IndexedSeq. These methods allow you to perform rich queries using for expressions. Here are some examples:

    val ele: Option[Element] = find("q")
    
    val eles: colection.immutable.IndexedSeq[Element] = findAll(className("small")) for (e <- eles; if e.tagName != "input") e should be ('displayed) val textFields = eles filter { tf.isInstanceOf[TextField] }

    Cleaning up

    To close the current browser window, and exit the driver if the current window was the only one remaining, use close:

    close()
    

    To close all windows, and exit the driver, use quit:

    quit()
    

    Alternate forms

    Although statements like “delete all cookies” fit well with matcher statements like “title should be ("Cheese!")”, they do not fit as well with the simple method call form of assertions. If you prefer, you can avoid operator notation and instead use alternatives that take the form of plain-old method calls. Here's an example:

    goTo("http://www.google.com")
    clickOn("q")
    textField("q").value = "Cheese!"
    submit()
    // Google's search is rendered dynamically with JavaScript.
    eventually(assert(pageTitle === "Cheese! - Google Search"))
    

    Here's a table showing the complete list of alternatives:

    operator notationmethod call
    go to (host + "index.html") goTo(host + "index.html")
    click on "aButton" clickOn("aButton")
    switch to activeElement switchTo(activeElement)
    add cookie ("cookie_name", "cookie_value") addCookie("cookie_name", "cookie_value")
    delete cookie "cookie_name" deleteCookie("cookie_name")
    delete all cookies deleteAllCookies()
    capture to "MyScreenShot" captureTo("MyScreenShot")

    Definition Classes
    selenium
  • ActiveElementTarget
  • AlertTarget
  • Checkbox
  • ClassNameQuery
  • ColorField
  • CookiesNoun
  • CssSelectorQuery
  • DateField
  • DateTimeField
  • DateTimeLocalField
  • DefaultContentTarget
  • Dimension
  • Element
  • EmailField
  • FrameElementTarget
  • FrameIndexTarget
  • FrameNameOrIdTarget
  • FrameWebElementTarget
  • IdQuery
  • LinkTextQuery
  • MonthField
  • MultiSel
  • MultiSelOptionSeq
  • NameQuery
  • NumberField
  • PartialLinkTextQuery
  • PasswordField
  • Point
  • Query
  • RadioButton
  • RadioButtonGroup
  • RangeField
  • SearchField
  • SingleSel
  • SwitchTarget
  • TagNameQuery
  • TelField
  • TextArea
  • TextField
  • TimeField
  • UrlField
  • ValueElement
  • WeekField
  • WindowTarget
  • WrappedCookie
  • XPathQuery
  • add
  • capture
  • click
  • delete
  • go
  • switch

class MultiSelOptionSeq extends IndexedSeq[String]

This class is part of ScalaTest's Selenium DSL. Please see the documentation for WebBrowser for an overview of the Selenium DSL.

This class enables syntax such as the following:

multiSel("select2").values += "option5"
                           ^

Instances of this class are returned from the values method of MultiSel. MultiSelOptionSeq is an immutable IndexedSeq[String] that wraps an underlying immutable IndexedSeq[String] and adds two methods, + and -, to facilitate the += syntax for setting additional options of the MultiSel. The Scala compiler will rewrite:

multiSel("select2").values += "option5"

To:

multiSel("select2").values = multiSel("select2").values + "option5"

Thus, first a new MultiSelOptionSeq is created by invoking the + method on the MultiSelOptionSeq returned by values, and that result is passed to the values_= method.

For symmetry, this class also offers a - method, which can be used to deselect an option, like this:

multiSel("select2").values -= "option5"
                           ^

Source
WebBrowser.scala
Linear Supertypes
IndexedSeq[String], IndexedSeqOps[String, IndexedSeq, IndexedSeq[String]], IndexedSeq[String], IndexedSeqOps[String, [_]IndexedSeq[_], IndexedSeq[String]], Seq[String], SeqOps[String, [_]IndexedSeq[_], IndexedSeq[String]], Seq[String], Equals, SeqOps[String, [_]IndexedSeq[_], IndexedSeq[String]], PartialFunction[Int, String], (Int) => String, Iterable[String], Iterable[String], IterableFactoryDefaults[String, [x]IndexedSeq[x]], IterableOps[String, [_]IndexedSeq[_], IndexedSeq[String]], IterableOnceOps[String, [_]IndexedSeq[_], IndexedSeq[String]], IterableOnce[String], AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. MultiSelOptionSeq
  2. IndexedSeq
  3. IndexedSeqOps
  4. IndexedSeq
  5. IndexedSeqOps
  6. Seq
  7. SeqOps
  8. Seq
  9. Equals
  10. SeqOps
  11. PartialFunction
  12. Function1
  13. Iterable
  14. Iterable
  15. IterableFactoryDefaults
  16. IterableOps
  17. IterableOnceOps
  18. IterableOnce
  19. AnyRef
  20. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Instance Constructors

  1. new MultiSelOptionSeq(underlying: IndexedSeq[String])

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##: Int
    Definition Classes
    AnyRef → Any
  3. def +(value: String): MultiSelOptionSeq

    Appends a string element to this sequence, if it doesn't already exist in the sequence.

    Appends a string element to this sequence, if it doesn't already exist in the sequence.

    If the string element already exists in this sequence, this method returns itself. If not, this method returns a new MultiSelOptionSeq with the passed value appended to the end of the original MultiSelOptionSeq.

    returns

    a MultiSelOptionSeq that contains the passed string value

  4. final def ++[B >: String](suffix: IterableOnce[B]): IndexedSeq[B]
    Definition Classes
    IterableOps
    Annotations
    @inline()
  5. final def ++:[B >: String](prefix: IterableOnce[B]): IndexedSeq[B]
    Definition Classes
    SeqOps → IterableOps
    Annotations
    @inline()
  6. final def +:[B >: String](elem: B): IndexedSeq[B]
    Definition Classes
    SeqOps
    Annotations
    @inline()
  7. def -(value: String): MultiSelOptionSeq

    Removes a string element to this sequence, if it already exists in the sequence.

    Removes a string element to this sequence, if it already exists in the sequence.

    If the string element does not already exist in this sequence, this method returns itself. If the element is contained in this sequence, this method returns a new MultiSelOptionSeq with the passed value removed from the the original MultiSelOptionSeq, leaving any other elements in the same order.

    returns

    a MultiSelOptionSeq that contains the passed string value

  8. final def :+[B >: String](elem: B): IndexedSeq[B]
    Definition Classes
    SeqOps
    Annotations
    @inline()
  9. final def :++[B >: String](suffix: IterableOnce[B]): IndexedSeq[B]
    Definition Classes
    SeqOps
    Annotations
    @inline()
  10. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  11. final def addString(b: StringBuilder): StringBuilder
    Definition Classes
    IterableOnceOps
    Annotations
    @inline()
  12. final def addString(b: StringBuilder, sep: String): StringBuilder
    Definition Classes
    IterableOnceOps
    Annotations
    @inline()
  13. def addString(b: StringBuilder, start: String, sep: String, end: String): StringBuilder
    Definition Classes
    IterableOnceOps
  14. def andThen[C](k: PartialFunction[String, C]): PartialFunction[Int, C]
    Definition Classes
    PartialFunction
  15. def andThen[C](k: (String) => C): PartialFunction[Int, C]
    Definition Classes
    PartialFunction → Function1
  16. def appended[B >: String](elem: B): IndexedSeq[B]
    Definition Classes
    SeqOps
  17. def appendedAll[B >: String](suffix: IterableOnce[B]): IndexedSeq[B]
    Definition Classes
    SeqOps
  18. def apply(idx: Int): String

    Selects an element by its index in the sequence.

    Selects an element by its index in the sequence.

    This method invokes apply on the underlying immutable IndexedSeq[String], passing in idx, and returns the result.

    idx

    the index to select

    returns

    the element of this sequence at index idx, where 0 indicates the first element

    Definition Classes
    MultiSelOptionSeq → SeqOps → Function1
  19. def applyOrElse[A1 <: Int, B1 >: String](x: A1, default: (A1) => B1): B1
    Definition Classes
    PartialFunction
  20. def applyPreferredMaxLength: Int
    Attributes
    protected
    Definition Classes
    IndexedSeq
  21. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  22. def canEqual(that: Any): Boolean
    Definition Classes
    IndexedSeq → Seq → Equals
  23. def className: String
    Attributes
    protected[this]
    Definition Classes
    Iterable
  24. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @native()
  25. final def coll: MultiSelOptionSeq.this.type
    Attributes
    protected
    Definition Classes
    Iterable → IterableOps
  26. def collect[B](pf: PartialFunction[String, B]): IndexedSeq[B]
    Definition Classes
    IterableOps → IterableOnceOps
  27. def collectFirst[B](pf: PartialFunction[String, B]): Option[B]
    Definition Classes
    IterableOnceOps
  28. def combinations(n: Int): Iterator[IndexedSeq[String]]
    Definition Classes
    SeqOps
  29. def compose[R](k: PartialFunction[R, Int]): PartialFunction[R, String]
    Definition Classes
    PartialFunction
  30. def compose[A](g: (A) => Int): (A) => String
    Definition Classes
    Function1
    Annotations
    @unspecialized()
  31. final def concat[B >: String](suffix: IterableOnce[B]): IndexedSeq[B]
    Definition Classes
    SeqOps → IterableOps
    Annotations
    @inline()
  32. def contains[A1 >: String](elem: A1): Boolean
    Definition Classes
    SeqOps
  33. def containsSlice[B >: String](that: Seq[B]): Boolean
    Definition Classes
    SeqOps
  34. def copyToArray[B >: String](xs: Array[B], start: Int, len: Int): Int
    Definition Classes
    IterableOnceOps
  35. def copyToArray[B >: String](xs: Array[B], start: Int): Int
    Definition Classes
    IterableOnceOps
    Annotations
    @deprecatedOverriding("This should always forward to the 3-arg version of this method", "2.13.4")
  36. def copyToArray[B >: String](xs: Array[B]): Int
    Definition Classes
    IterableOnceOps
    Annotations
    @deprecatedOverriding("This should always forward to the 3-arg version of this method", "2.13.4")
  37. def corresponds[B](that: Seq[B])(p: (String, B) => Boolean): Boolean
    Definition Classes
    SeqOps
  38. def corresponds[B](that: IterableOnce[B])(p: (String, B) => Boolean): Boolean
    Definition Classes
    IterableOnceOps
  39. def count(p: (String) => Boolean): Int
    Definition Classes
    IterableOnceOps
  40. def diff[B >: String](that: Seq[B]): IndexedSeq[String]
    Definition Classes
    SeqOps
  41. def distinct: IndexedSeq[String]
    Definition Classes
    SeqOps
  42. def distinctBy[B](f: (String) => B): IndexedSeq[String]
    Definition Classes
    SeqOps
  43. def drop(n: Int): IndexedSeq[String]
    Definition Classes
    IndexedSeqOps → IterableOps → IterableOnceOps
  44. def dropRight(n: Int): IndexedSeq[String]
    Definition Classes
    IndexedSeqOps → IterableOps
  45. def dropWhile(p: (String) => Boolean): IndexedSeq[String]
    Definition Classes
    IterableOps → IterableOnceOps
  46. def elementWise: ElementWiseExtractor[Int, String]
    Definition Classes
    PartialFunction
  47. def empty: IndexedSeq[String]
    Definition Classes
    IterableFactoryDefaults → IterableOps
  48. def endsWith[B >: String](that: Iterable[B]): Boolean
    Definition Classes
    SeqOps
  49. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  50. def equals(o: Any): Boolean
    Definition Classes
    Seq → Equals → AnyRef → Any
  51. def exists(p: (String) => Boolean): Boolean
    Definition Classes
    IterableOnceOps
  52. def filter(pred: (String) => Boolean): IndexedSeq[String]
    Definition Classes
    IterableOps → IterableOnceOps
  53. def filterNot(pred: (String) => Boolean): IndexedSeq[String]
    Definition Classes
    IterableOps → IterableOnceOps
  54. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable])
  55. def find(p: (String) => Boolean): Option[String]
    Definition Classes
    IterableOnceOps
  56. def findLast(p: (String) => Boolean): Option[String]
    Definition Classes
    SeqOps
  57. def flatMap[B](f: (String) => IterableOnce[B]): IndexedSeq[B]
    Definition Classes
    IterableOps → IterableOnceOps
  58. def flatten[B](implicit asIterable: (String) => IterableOnce[B]): IndexedSeq[B]
    Definition Classes
    IterableOps → IterableOnceOps
  59. def fold[A1 >: String](z: A1)(op: (A1, A1) => A1): A1
    Definition Classes
    IterableOnceOps
  60. def foldLeft[B](z: B)(op: (B, String) => B): B
    Definition Classes
    IterableOnceOps
  61. def foldRight[B](z: B)(op: (String, B) => B): B
    Definition Classes
    IndexedSeqOps → IterableOnceOps
  62. def forall(p: (String) => Boolean): Boolean
    Definition Classes
    IterableOnceOps
  63. def foreach[U](f: (String) => U): Unit
    Definition Classes
    IterableOnceOps
  64. def fromSpecific(coll: IterableOnce[String]): IndexedSeq[String]
    Attributes
    protected
    Definition Classes
    IterableFactoryDefaults → IterableOps
  65. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  66. def groupBy[K](f: (String) => K): Map[K, IndexedSeq[String]]
    Definition Classes
    IterableOps
  67. def groupMap[K, B](key: (String) => K)(f: (String) => B): Map[K, IndexedSeq[B]]
    Definition Classes
    IterableOps
  68. def groupMapReduce[K, B](key: (String) => K)(f: (String) => B)(reduce: (B, B) => B): Map[K, B]
    Definition Classes
    IterableOps
  69. def grouped(size: Int): Iterator[IndexedSeq[String]]
    Definition Classes
    IterableOps
  70. def hashCode(): Int
    Definition Classes
    Seq → AnyRef → Any
  71. def head: String
    Definition Classes
    IndexedSeqOps → IterableOps
  72. def headOption: Option[String]
    Definition Classes
    IndexedSeqOps → IterableOps
  73. def indexOf[B >: String](elem: B): Int
    Definition Classes
    SeqOps
    Annotations
    @deprecatedOverriding("Override indexOf(elem, from) instead - indexOf(elem) calls indexOf(elem, 0)", "2.13.0")
  74. def indexOf[B >: String](elem: B, from: Int): Int
    Definition Classes
    SeqOps
  75. def indexOfSlice[B >: String](that: Seq[B]): Int
    Definition Classes
    SeqOps
    Annotations
    @deprecatedOverriding("Override indexOfSlice(that, from) instead - indexOfSlice(that) calls indexOfSlice(that, 0)", "2.13.0")
  76. def indexOfSlice[B >: String](that: Seq[B], from: Int): Int
    Definition Classes
    SeqOps
  77. def indexWhere(p: (String) => Boolean): Int
    Definition Classes
    SeqOps
    Annotations
    @deprecatedOverriding("Override indexWhere(p, from) instead - indexWhere(p) calls indexWhere(p, 0)", "2.13.0")
  78. def indexWhere(p: (String) => Boolean, from: Int): Int
    Definition Classes
    SeqOps
  79. def indices: Range
    Definition Classes
    SeqOps
  80. def init: IndexedSeq[String]
    Definition Classes
    IterableOps
  81. def inits: Iterator[IndexedSeq[String]]
    Definition Classes
    IterableOps
  82. def intersect[B >: String](that: Seq[B]): IndexedSeq[String]
    Definition Classes
    SeqOps
  83. def isDefinedAt(idx: Int): Boolean
    Definition Classes
    SeqOps
  84. def isEmpty: Boolean
    Definition Classes
    SeqOps → IterableOnceOps
  85. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  86. def isTraversableAgain: Boolean
    Definition Classes
    IterableOps → IterableOnceOps
  87. def iterableFactory: SeqFactory[IndexedSeq]
    Definition Classes
    IndexedSeq → IndexedSeq → Seq → Seq → Iterable → Iterable → IterableOps
  88. def iterator: Iterator[String]
    Definition Classes
    IndexedSeqOps → IterableOnce
  89. def knownSize: Int
    Definition Classes
    IndexedSeqOps → IterableOnce
  90. def last: String
    Definition Classes
    IndexedSeqOps → IterableOps
  91. def lastIndexOf[B >: String](elem: B, end: Int): Int
    Definition Classes
    SeqOps
  92. def lastIndexOfSlice[B >: String](that: Seq[B]): Int
    Definition Classes
    SeqOps
    Annotations
    @deprecatedOverriding("Override lastIndexOfSlice(that, end) instead - lastIndexOfSlice(that) calls lastIndexOfSlice(that, Int.MaxValue)", "2.13.0")
  93. def lastIndexOfSlice[B >: String](that: Seq[B], end: Int): Int
    Definition Classes
    SeqOps
  94. def lastIndexWhere(p: (String) => Boolean): Int
    Definition Classes
    SeqOps
    Annotations
    @deprecatedOverriding("Override lastIndexWhere(p, end) instead - lastIndexWhere(p) calls lastIndexWhere(p, Int.MaxValue)", "2.13.0")
  95. def lastIndexWhere(p: (String) => Boolean, end: Int): Int
    Definition Classes
    SeqOps
  96. def lastOption: Option[String]
    Definition Classes
    IterableOps
  97. def lazyZip[B](that: Iterable[B]): LazyZip2[String, B, MultiSelOptionSeq.this.type]
    Definition Classes
    Iterable
  98. def length: Int

    The length of this sequence.

    The length of this sequence.

    This method invokes length on the underlying immutable IndexedSeq[String] and returns the result.

    returns

    the number of elements in this sequence

    Definition Classes
    MultiSelOptionSeq → SeqOps
  99. final def lengthCompare(that: Iterable[_]): Int
    Definition Classes
    IndexedSeqOps → SeqOps
  100. final def lengthCompare(len: Int): Int
    Definition Classes
    IndexedSeqOps → SeqOps
  101. final def lengthIs: SizeCompareOps
    Definition Classes
    SeqOps
    Annotations
    @inline()
  102. def lift: (Int) => Option[String]
    Definition Classes
    PartialFunction
  103. def map[B](f: (String) => B): IndexedSeq[B]
    Definition Classes
    IndexedSeqOps → IterableOps → IterableOnceOps
  104. def max[B >: String](implicit ord: Ordering[B]): String
    Definition Classes
    IterableOnceOps
  105. def maxBy[B](f: (String) => B)(implicit cmp: Ordering[B]): String
    Definition Classes
    IterableOnceOps
  106. def maxByOption[B](f: (String) => B)(implicit cmp: Ordering[B]): Option[String]
    Definition Classes
    IterableOnceOps
  107. def maxOption[B >: String](implicit ord: Ordering[B]): Option[String]
    Definition Classes
    IterableOnceOps
  108. def min[B >: String](implicit ord: Ordering[B]): String
    Definition Classes
    IterableOnceOps
  109. def minBy[B](f: (String) => B)(implicit cmp: Ordering[B]): String
    Definition Classes
    IterableOnceOps
  110. def minByOption[B](f: (String) => B)(implicit cmp: Ordering[B]): Option[String]
    Definition Classes
    IterableOnceOps
  111. def minOption[B >: String](implicit ord: Ordering[B]): Option[String]
    Definition Classes
    IterableOnceOps
  112. final def mkString: String
    Definition Classes
    IterableOnceOps
    Annotations
    @inline()
  113. final def mkString(sep: String): String
    Definition Classes
    IterableOnceOps
    Annotations
    @inline()
  114. final def mkString(start: String, sep: String, end: String): String
    Definition Classes
    IterableOnceOps
  115. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  116. def newSpecificBuilder: Builder[String, IndexedSeq[String]]
    Attributes
    protected
    Definition Classes
    IterableFactoryDefaults → IterableOps
  117. def nonEmpty: Boolean
    Definition Classes
    IterableOnceOps
    Annotations
    @deprecatedOverriding("nonEmpty is defined as !isEmpty; override isEmpty instead", "2.13.0")
  118. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  119. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  120. def occCounts[B](sq: Seq[B]): Map[B, Int]
    Attributes
    protected[collection]
    Definition Classes
    SeqOps
  121. def orElse[A1 <: Int, B1 >: String](that: PartialFunction[A1, B1]): PartialFunction[A1, B1]
    Definition Classes
    PartialFunction
  122. def padTo[B >: String](len: Int, elem: B): IndexedSeq[B]
    Definition Classes
    SeqOps
  123. def partition(p: (String) => Boolean): (IndexedSeq[String], IndexedSeq[String])
    Definition Classes
    IterableOps
  124. def partitionMap[A1, A2](f: (String) => Either[A1, A2]): (IndexedSeq[A1], IndexedSeq[A2])
    Definition Classes
    IterableOps
  125. def patch[B >: String](from: Int, other: IterableOnce[B], replaced: Int): IndexedSeq[B]
    Definition Classes
    SeqOps
  126. def permutations: Iterator[IndexedSeq[String]]
    Definition Classes
    SeqOps
  127. def prepended[B >: String](elem: B): IndexedSeq[B]
    Definition Classes
    IndexedSeqOps → SeqOps
  128. def prependedAll[B >: String](prefix: IterableOnce[B]): IndexedSeq[B]
    Definition Classes
    SeqOps
  129. def product[B >: String](implicit num: Numeric[B]): B
    Definition Classes
    IterableOnceOps
  130. def reduce[B >: String](op: (B, B) => B): B
    Definition Classes
    IterableOnceOps
  131. def reduceLeft[B >: String](op: (B, String) => B): B
    Definition Classes
    IterableOnceOps
  132. def reduceLeftOption[B >: String](op: (B, String) => B): Option[B]
    Definition Classes
    IterableOnceOps
  133. def reduceOption[B >: String](op: (B, B) => B): Option[B]
    Definition Classes
    IterableOnceOps
  134. def reduceRight[B >: String](op: (String, B) => B): B
    Definition Classes
    IterableOnceOps
  135. def reduceRightOption[B >: String](op: (String, B) => B): Option[B]
    Definition Classes
    IterableOnceOps
  136. def reverse: IndexedSeq[String]
    Definition Classes
    IndexedSeqOps → SeqOps
  137. def reverseIterator: Iterator[String]
    Definition Classes
    IndexedSeqOps → SeqOps
  138. def reversed: Iterable[String]
    Attributes
    protected
    Definition Classes
    IndexedSeqOps → IterableOnceOps
  139. def runWith[U](action: (String) => U): (Int) => Boolean
    Definition Classes
    PartialFunction
  140. def sameElements[B >: String](o: IterableOnce[B]): Boolean
    Definition Classes
    IndexedSeq → SeqOps
  141. def scan[B >: String](z: B)(op: (B, B) => B): IndexedSeq[B]
    Definition Classes
    IterableOps
  142. def scanLeft[B](z: B)(op: (B, String) => B): IndexedSeq[B]
    Definition Classes
    IterableOps → IterableOnceOps
  143. def scanRight[B](z: B)(op: (String, B) => B): IndexedSeq[B]
    Definition Classes
    IterableOps
  144. def search[B >: String](elem: B, from: Int, to: Int)(implicit ord: Ordering[B]): SearchResult
    Definition Classes
    IndexedSeqOps → SeqOps
  145. def search[B >: String](elem: B)(implicit ord: Ordering[B]): SearchResult
    Definition Classes
    IndexedSeqOps → SeqOps
  146. def segmentLength(p: (String) => Boolean, from: Int): Int
    Definition Classes
    SeqOps
  147. final def segmentLength(p: (String) => Boolean): Int
    Definition Classes
    SeqOps
  148. final def size: Int
    Definition Classes
    SeqOps → IterableOnceOps
  149. final def sizeCompare(that: Iterable[_]): Int
    Definition Classes
    SeqOps → IterableOps
  150. final def sizeCompare(otherSize: Int): Int
    Definition Classes
    SeqOps → IterableOps
  151. final def sizeIs: SizeCompareOps
    Definition Classes
    IterableOps
    Annotations
    @inline()
  152. def slice(from: Int, until: Int): IndexedSeq[String]
    Definition Classes
    IndexedSeqOps → IndexedSeqOps → IterableOps → IterableOnceOps
  153. def sliding(size: Int, step: Int): Iterator[IndexedSeq[String]]
    Definition Classes
    IterableOps
  154. def sliding(size: Int): Iterator[IndexedSeq[String]]
    Definition Classes
    IterableOps
  155. def sortBy[B](f: (String) => B)(implicit ord: Ordering[B]): IndexedSeq[String]
    Definition Classes
    SeqOps
  156. def sortWith(lt: (String, String) => Boolean): IndexedSeq[String]
    Definition Classes
    SeqOps
  157. def sorted[B >: String](implicit ord: Ordering[B]): IndexedSeq[String]
    Definition Classes
    SeqOps
  158. def span(p: (String) => Boolean): (IndexedSeq[String], IndexedSeq[String])
    Definition Classes
    IterableOps → IterableOnceOps
  159. def splitAt(n: Int): (IndexedSeq[String], IndexedSeq[String])
    Definition Classes
    IterableOps → IterableOnceOps
  160. def startsWith[B >: String](that: IterableOnce[B], offset: Int): Boolean
    Definition Classes
    SeqOps
  161. def stepper[S <: Stepper[_]](implicit shape: StepperShape[String, S]): S with EfficientSplit
    Definition Classes
    IndexedSeqOps → IterableOnce
  162. def stringPrefix: String
    Attributes
    protected[this]
    Definition Classes
    IndexedSeq → Seq → Iterable
  163. def sum[B >: String](implicit num: Numeric[B]): B
    Definition Classes
    IterableOnceOps
  164. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  165. def tail: IndexedSeq[String]
    Definition Classes
    IterableOps
  166. def tails: Iterator[IndexedSeq[String]]
    Definition Classes
    IterableOps
  167. def take(n: Int): IndexedSeq[String]
    Definition Classes
    IndexedSeqOps → IterableOps → IterableOnceOps
  168. def takeRight(n: Int): IndexedSeq[String]
    Definition Classes
    IndexedSeqOps → IterableOps
  169. def takeWhile(p: (String) => Boolean): IndexedSeq[String]
    Definition Classes
    IterableOps → IterableOnceOps
  170. def tapEach[U](f: (String) => U): IndexedSeq[String]
    Definition Classes
    IterableOps → IterableOnceOps
  171. def to[C1](factory: Factory[String, C1]): C1
    Definition Classes
    IterableOnceOps
  172. def toArray[B >: String](implicit arg0: ClassTag[B]): Array[B]
    Definition Classes
    IterableOnceOps
  173. final def toBuffer[B >: String]: Buffer[B]
    Definition Classes
    IterableOnceOps
    Annotations
    @inline()
  174. final def toIndexedSeq: IndexedSeq[String]
    Definition Classes
    IndexedSeq → IterableOnceOps
  175. final def toIterable: MultiSelOptionSeq.this.type
    Definition Classes
    Iterable → IterableOps
  176. def toList: List[String]
    Definition Classes
    IterableOnceOps
  177. def toMap[K, V](implicit ev: <:<[String, (K, V)]): Map[K, V]
    Definition Classes
    IterableOnceOps
  178. final def toSeq: MultiSelOptionSeq.this.type
    Definition Classes
    Seq → IterableOnceOps
  179. def toSet[B >: String]: Set[B]
    Definition Classes
    IterableOnceOps
  180. def toString(): String
    Definition Classes
    Seq → Function1 → Iterable → AnyRef → Any
  181. def toVector: Vector[String]
    Definition Classes
    IterableOnceOps
  182. def transpose[B](implicit asIterable: (String) => Iterable[B]): IndexedSeq[IndexedSeq[B]]
    Definition Classes
    IterableOps
  183. def unapply(a: Int): Option[String]
    Definition Classes
    PartialFunction
  184. def unzip[A1, A2](implicit asPair: (String) => (A1, A2)): (IndexedSeq[A1], IndexedSeq[A2])
    Definition Classes
    IterableOps
  185. def unzip3[A1, A2, A3](implicit asTriple: (String) => (A1, A2, A3)): (IndexedSeq[A1], IndexedSeq[A2], IndexedSeq[A3])
    Definition Classes
    IterableOps
  186. def updated[B >: String](index: Int, elem: B): IndexedSeq[B]
    Definition Classes
    SeqOps
  187. def view: IndexedSeqView[String]
    Definition Classes
    IndexedSeqOps → SeqOps → IterableOps
  188. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  189. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  190. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException]) @native()
  191. def withFilter(p: (String) => Boolean): WithFilter[String, [_]IndexedSeq[_]]
    Definition Classes
    IterableOps
  192. def zip[B](that: IterableOnce[B]): IndexedSeq[(String, B)]
    Definition Classes
    IterableOps
  193. def zipAll[A1 >: String, B](that: Iterable[B], thisElem: A1, thatElem: B): IndexedSeq[(A1, B)]
    Definition Classes
    IterableOps
  194. def zipWithIndex: IndexedSeq[(String, Int)]
    Definition Classes
    IterableOps → IterableOnceOps

Deprecated Value Members

  1. final def /:[B](z: B)(op: (B, String) => B): B
    Definition Classes
    IterableOnceOps
    Annotations
    @deprecated @inline()
    Deprecated

    (Since version 2.13.0) Use foldLeft instead of /:

  2. final def :\[B](z: B)(op: (String, B) => B): B
    Definition Classes
    IterableOnceOps
    Annotations
    @deprecated @inline()
    Deprecated

    (Since version 2.13.0) Use foldRight instead of :\

  3. def aggregate[B](z: => B)(seqop: (B, String) => B, combop: (B, B) => B): B
    Definition Classes
    IterableOnceOps
    Annotations
    @deprecated
    Deprecated

    (Since version 2.13.0) aggregate is not relevant for sequential collections. Use foldLeft(z)(seqop) instead.

  4. def companion: IterableFactory[[_]IndexedSeq[_]]
    Definition Classes
    IterableOps
    Annotations
    @deprecated @deprecatedOverriding("Use iterableFactory instead", "2.13.0") @inline()
    Deprecated

    (Since version 2.13.0) Use iterableFactory instead

  5. final def copyToBuffer[B >: String](dest: Buffer[B]): Unit
    Definition Classes
    IterableOnceOps
    Annotations
    @deprecated @inline()
    Deprecated

    (Since version 2.13.0) Use dest ++= coll instead

  6. def hasDefiniteSize: Boolean
    Definition Classes
    IterableOnceOps
    Annotations
    @deprecated
    Deprecated

    (Since version 2.13.0) Check .knownSize instead of .hasDefiniteSize for more actionable information (see scaladoc for details)

  7. final def prefixLength(p: (String) => Boolean): Int
    Definition Classes
    SeqOps
    Annotations
    @deprecated @inline()
    Deprecated

    (Since version 2.13.0) Use segmentLength instead of prefixLength

  8. final def repr: IndexedSeq[String]
    Definition Classes
    IterableOps
    Annotations
    @deprecated
    Deprecated

    (Since version 2.13.0) Use coll instead of repr in a collection implementation, use the collection value itself from the outside

  9. def reverseMap[B](f: (String) => B): IndexedSeq[B]
    Definition Classes
    SeqOps
    Annotations
    @deprecated
    Deprecated

    (Since version 2.13.0) Use .reverseIterator.map(f).to(...) instead of .reverseMap(f)

  10. def seq: MultiSelOptionSeq.this.type
    Definition Classes
    Iterable
    Annotations
    @deprecated
    Deprecated

    (Since version 2.13.0) Iterable.seq always returns the iterable itself

  11. final def toIterator: Iterator[String]
    Definition Classes
    IterableOnceOps
    Annotations
    @deprecated @inline()
    Deprecated

    (Since version 2.13.0) Use .iterator instead of .toIterator

  12. final def toStream: Stream[String]
    Definition Classes
    IterableOnceOps
    Annotations
    @deprecated @inline()
    Deprecated

    (Since version 2.13.0) Use .to(LazyList) instead of .toStream

  13. final def toTraversable: Traversable[String]
    Definition Classes
    IterableOps
    Annotations
    @deprecated
    Deprecated

    (Since version 2.13.0) Use toIterable instead

  14. final def union[B >: String](that: Seq[B]): IndexedSeq[B]
    Definition Classes
    SeqOps
    Annotations
    @deprecated @inline()
    Deprecated

    (Since version 2.13.0) Use concat instead

  15. def view(from: Int, until: Int): IndexedSeqView[String]
    Definition Classes
    IndexedSeqOps → IterableOps
    Annotations
    @deprecated
    Deprecated

    (Since version 2.13.0) Use .view.slice(from, until) instead of .view(from, until)

Inherited from IndexedSeq[String]

Inherited from IndexedSeqOps[String, IndexedSeq, IndexedSeq[String]]

Inherited from IndexedSeq[String]

Inherited from IndexedSeqOps[String, [_]IndexedSeq[_], IndexedSeq[String]]

Inherited from Seq[String]

Inherited from SeqOps[String, [_]IndexedSeq[_], IndexedSeq[String]]

Inherited from Seq[String]

Inherited from Equals

Inherited from SeqOps[String, [_]IndexedSeq[_], IndexedSeq[String]]

Inherited from PartialFunction[Int, String]

Inherited from (Int) => String

Inherited from Iterable[String]

Inherited from Iterable[String]

Inherited from IterableFactoryDefaults[String, [x]IndexedSeq[x]]

Inherited from IterableOps[String, [_]IndexedSeq[_], IndexedSeq[String]]

Inherited from IterableOnceOps[String, [_]IndexedSeq[_], IndexedSeq[String]]

Inherited from IterableOnce[String]

Inherited from AnyRef

Inherited from Any

Ungrouped