Search code examples
swiftread-eval-print-loop

How do I quit swift repl without using ctrl-d?


I want to quit swift repl gracefully and not use ctrl-d to exit it.

For eg. python repl can be exited by typing exit(). Is there a similar way of quitting swift repl?


Solution

  • This answer complements Ankit Goel's correct :quit answer to also (1) provide an understanding of why the : is needed and (2) other options besides :quit.

    Swift REPL works in conjuction with the LLDB debugger.

    : is a REPL escape prefix to execute an LLDB command. From within REPL, :help will list the available LLDB commands.

    Any of the following will quit both Swift REPL and subsequently LLDB with a single command line.

    :exit
    :quit
    :q
    

    One can also exit REPL into LLDB with just : and, then later quit (or exit) using the LLDB command directly.

    sh$ swift
      Welcome…
    1> print(18 + 4)
      22
    2> :
    (lldb) print "hello"
      (String) $R0 = "hello"
    (lldb) quit
    sh$
    

    Addendum: The LLDB command c or continue can be used to return to the Swift REPL environment.