https://ruby-doc.org/core-2.2.0/Array.html#method-i-include-3F
include?(object) → true or false
Returns true if the given object is present in self (that is, if any element == object), otherwise returns false.
Így várjon az ember konzisztenciát..
- Huncraft blogja
- A hozzászóláshoz be kell jelentkezni
- 758 megtekintés
Hozzászólások
Hat nekem pedig pont igy logikus. Mert egy string meg felfoghato ugy, mint karakterekbol allo array.
- A hozzászóláshoz be kell jelentkezni
Akkor nem kéne annak is false-ot adnia?
____________________________________
Az embert 2 éven át arra tanítják hogyan álljon meg a 2 lábán, és hogyan beszéljen... Aztán azt mondják neki: -"Ülj le és kuss legyen!"..
- A hozzászóláshoz be kell jelentkezni
De.
--
♙♘♗♖♕♔
- A hozzászóláshoz be kell jelentkezni
Nem látom a problémát. Stringben nyilván töredékre érdemes keresni, tömbben meg elemre (pontos egyezés).
- A hozzászóláshoz be kell jelentkezni
+1 dokumentáció nélkül is ezt a működést várnám el.
- A hozzászóláshoz be kell jelentkezni
+1
Máshol is így szokás.
➜ ~ python
Python 2.7.13 (default, Dec 18 2016, 07:03:39)
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.42.1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> "www" in "wwwroot"
True
>>> "www" in ["wwwroot"]
False
>>>
- A hozzászóláshoz be kell jelentkezni
Hmm.. Mondjuk python-ba ebbe még nem sikerült belefussak.
Ettől függetlenül úgy látszik a hiba bennem van, mert elvárnám, hogy ugyan az a funkció hasonló képen működjön mindenféle objektumra (tiszta SAP-s érzés, ahol egyik modul alatt az F1 a helpet adta, másik alatt meg kilépett a modulból)
____________________________________
Az embert 2 éven át arra tanítják hogyan álljon meg a 2 lábán, és hogyan beszéljen... Aztán azt mondják neki: -"Ülj le és kuss legyen!"..
- A hozzászóláshoz be kell jelentkezni
Gondolkodásbeli különbség van a nyelv és közted. Számomra ez így logikus, szerintem hasonlóan működik.
- A hozzászóláshoz be kell jelentkezni
Hát jó.. lesson learned.. Ebbe is bele kellett egyszer futni úgy nézem..
____________________________________
Az embert 2 éven át arra tanítják hogyan álljon meg a 2 lábán, és hogyan beszéljen... Aztán azt mondják neki: -"Ülj le és kuss legyen!"..
- A hozzászóláshoz be kell jelentkezni
Az lehet felrevezeto, a megszokottol eltero, hogy Rubyban a String az nem karakter tomb. Lehet indexelni, de nem Enumerable mint a tomb. Van viszont az each_char ami Enumerator-t ad vissza. Az Enumerable-en levo include? amit a tomb es egyeb felsorolhato dologok orokolnek mas mint a String#include?. A hiba inkabb a nevben van jobb lett volna #include? helyett #substring?.
- A hozzászóláshoz be kell jelentkezni
"ugyan az a funkció hasonló képen működjön mindenféle objektumra"
De hisz ugyanúgy működik. Mindkét esetben azt nézed meg, hogy az adott objektum típus része-e a megadott string. Csak épp string esetében a részvizsgálat azt jelenti, hogy a string tartalmazza-e, tömb esetében pedig az, hogy a tömb tartalmazza-e (nem pedig az, hogy a tömbben lévő valamelyik string tartalmazza-e)
- A hozzászóláshoz be kell jelentkezni
Nem egészen. Pythonban a dokumentáció szerint az in definíciója sequence típusok esetén:
x in s : True if an item of s is equal to x, else False (1)
alatta az (1):
While the in and not in operations are used only for simple containment testing in the general case, some specialised sequences (such as str, bytes and bytearray) also use them for subsequence testing:
>>> "gg" in "eggs"
True
Szóval Huncraft-nak igaza van. Python-ban sem teljesen konzisztens az "in". Más kérdés, hogy ezekre a típusokra ez praktikus, csak nem minden sequence típus esetén működik az "in" subsequence testing-ként is pl.:
>>> x=[1, 3, 5, 7]
>>> [1, 3, 5] in x
False
--
♙♘♗♖♕♔
- A hozzászóláshoz be kell jelentkezni
Fordítok Linuxos példára, hátha úgy jobban érthető a problémám:
'grep' Vs 'grep -w' - Előbbi részleges egyezést néz, utóbbi csak teljes egyezést. Ezért is idegesít kicsit az include, mert egyik objektumra "grep-ként", másikra "grep -w"-ként viselkedik..
szerk: Ha minden objektumnál ugyan úgy működne, akkor azt várnám, hogy mindenhol teljes egyezést nézzen (tekintve, hogy tömbben részleges egyezést nézni tényleg elég hülyén jönne ki)
____________________________________
Az embert 2 éven át arra tanítják hogyan álljon meg a 2 lábán, és hogyan beszéljen... Aztán azt mondják neki: -"Ülj le és kuss legyen!"..
- A hozzászóláshoz be kell jelentkezni
Hint: https://repl.it/KrAC/0
- A hozzászóláshoz be kell jelentkezni
Napokban sikerült belefutni egy érdekességbe az include-al kapcsolatban --- ime:
x = Object.new
x.define_singleton_method(:==) { |_| false }
x == x # => false
[x].include? x # => true
Ez persze egy az egyben ellent mond ennek : http://ruby-doc.org/core-2.5.0/Array.html#method-i-include-3F
szerk: https://www.codewars.com/kata/527c3755bb2890568500000d ez alapjan jutott ez az eszembe.
De az erdekes, hogy valoszinuleg annak aki az Array#include?-ot irta, az ilyen "corner-case" -ek elkerultek a figyelmet :)
- A hozzászóláshoz be kell jelentkezni