2

I have ridiculous error using strings

var myString = "A"

print(myString[myString.startIndex] == "-")    // false

this code works really fine, but when i replace "-" with same character in struct like this:

var myString = "A"

struct number {
    static let negative = "-"
}

print(myString[myString.startIndex] == number.negative)

Compile error suddenly appears

Subscript 'subscript(_:)' requires that 'String.Index' conform to 'RangeExpression'

This error code is about string but only thing changed is "-" to number.negative

Please tell me why there's error on substring

Dan Choi
  • 83
  • 2
  • 8

1 Answers1

0

Option-click on the equals operator. It's not what you think it is.

https://developer.apple.com/documentation/swift/string/1540052-subscript

Solution:

struct Number {
  static let negative: Character = "-"
}

myString[myString.startIndex] == Number.negative
  • 2
    I gather that the problem is in the distinction between a Character and a String which is one Character long. I think it would improve this answer to spell that out; I think it's less useful to readers to post an answer which itself is a puzzle. – Robert Dodier Oct 15 '21 at 20:32