Questionnaire.swift 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. // Copyright 2023 Google LLC
  2. //
  3. // Licensed under the Apache License, Version 2.0 (the "License");
  4. // you may not use this file except in compliance with the License.
  5. // You may obtain a copy of the License at
  6. //
  7. // http://www.apache.org/licenses/LICENSE-2.0
  8. //
  9. // Unless required by applicable law or agreed to in writing, software
  10. // distributed under the License is distributed on an "AS IS" BASIS,
  11. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. // See the License for the specific language governing permissions and
  13. // limitations under the License.
  14. import Foundation
  15. /// A structure representing a series of questions.
  16. struct Questionnaire {
  17. /// A structure representing a question within a questionnaire.
  18. struct Question {
  19. /// The question's string query, for example, _What is your name?_.
  20. let question: String
  21. /// A closure to be invoked with the answer to the question.
  22. let answerHandler: (_ answer: Any) throws -> Void
  23. }
  24. /// Moves to and returns the next question in the questionnaire.
  25. /// - Returns: The next question in the questionnaire, if any.
  26. mutating func nextQuestion() -> Question? {
  27. // TODO(ncooke3): Implement.
  28. nil
  29. }
  30. /// Calls the current question's answer handling closure with the given answer.
  31. /// - Parameter answer: The answer to pass to the current question's answer handling closure.
  32. func processAnswer(_ answer: String) throws {
  33. // TODO(ncooke3): Implement.
  34. }
  35. }